종바깅 2021. 3. 29. 00:01

AWS API Gateway

REST(Representational State Transfer)

  • REST의 추상적 정의

    소프트웨어의 구성요소들 사이의 관계를 표현한 '소프트웨어 아키텍쳐'의 한 형식, Server에서 제공하는 자원을 정의하고 자원에 대한 주소를 지정하는 방식을 뜻함

  • REST의 구체적 정의

    모든 자원(Resource)을 HTTP URI(Uniform Resource Identifier)로 표현하고, '행위'에 해당하는 HTTP Method(GET, PUT, POST, DELETE)를 통해 해당 자원에 대해 CRUD를 지시하는 것을 뜻함.

    *CRUD : Create(생성), Read(조회), Update(수정), Delete(삭제)

하나의 웹사이트가 존재하고각종 이미지와 텍스트 파일 등을 제공할 경우, 각 이미지와 텍스트 파일은 고유의 URI를 갖게 된다.

  • Client 는 그 URI 를 GET(조회), PUT(수정)하는 등의 행동을 통해 통신할 수 있음.

  • http://www.abc.com/user/hyoh/name -- > 'name'으로 저장된 resource 의 URI

  • HTTP GET /user/hyoh/name -- > 해당 resource 호출, 'name'의 값을 가져옴

REST의 필수 3요소 - 자원(Resource), 행위(Verb), 표현(Representations)

  • 자원 - Server에서 제공하는 모든 Resource

  • 행위(Verb) - HTTPMethod를 사용하여Server에서 제공하는Resource를 취득하는 행위

  • 표현(Representations) - HTTPMethod에 응답하여Server가 전달하는Resource를 표현하는 방법

    HTTP GET /user/Jonghyeon/name
    {
    "name" : "Jonghyeon"('name'의 값) 
    }
  • REST API - 이러한 REST의 특성에 맞도록 설계한 API를 REST API라고 칭한다

AWS API Gateway

REST API 및 Websocket API 를 생성, 유지, 관리하는 AWS 서비스이다.

  • Lambda, AWS Service, VPC, HTTP webpage 등과 연동하여 resource 에 대한 HTTP

    Method 정의 가능 → 웹 애플리케이션, EC2, Lambda등 AWS Service에서 실행되는 워크로드를 처리할 수 있다.

  • 수 십만 건의 동시 API호출을 처리할 수 있음

  • APIGateway와 Lambda를 연동하여 사용하기 용이함 => User - > API Gateway -> Lambda

  • 핵심 구성요소로 Resource 와 Method, Stage 가 있다.

    • Resource
      • APIGateway의 핵심 구성요소 중 하나
      • 서비스의 대상이 되는 자원을 의미
      • 모든 자원(Resource)를 HTTP URI 로 표현하는 REST 의 특성상, 각 리소스는 고유의 URI를 부여받음
      • Resource는HTTPMethod를 생성할 수 있으며,Method에 대해 연결 포인트를 만들어 행동 대상을 지정할 수 있다.
    • Method
      • APIGateway의 핵심 구성요소 중 하나
      • 서비스의 대상으로 지정된 자원에 대해 취할 행동을 정의함
      • HTTP Method 가 사용되며 GET, PUT, POST, HEAD, OPTION 등이 있음 - 각 Method마다 연결 포인트를 지정할 수 있음
      • Lambda를 연결 포인트로 지정시LambdaFunction을 호출하여 수행함
    • Stage
      • APIGateway의 핵심 구성요소 중 하나
      • 위에서 언급한 두 개의 요소를 하나로 합쳐 Console 에서는 'Resource'라 표현하며, 'Resource'를 배포한 것이 Stage
      • Client가 실제로 사용하기 위해 생성해야하는 배포판
      • Stage 생성시 각 리소스에 대해 URI가 생성된 것을 확인할 수 있음
  • API Gateway 생성시, 최상위에 '/ Method(Root Method)'가 하나만 존재하는 상태로 시작한다.

  • Cloudfront 를 통해 정적 페이지는 S3 에서 제공하고, 동적 페이지 혹은 데이터는 Cloudfront-APIGateway-Lambda를 통해 처리하는 방식 사용 가능

  • API Gateway 는 HTTPS endpoints 통해 URI 를 게시함

  • AWS 가 프로비저닝과 관리를 분담하고 고객이 개발만을 집중하고자 할 경우 API Gateway와Lambda가 유용하게 사용될 수 있음

AWS API Gateway를 통한 보호

  • 엔드포인트 노출 방지
  • DDoS 및 명령어 주입 공격으로부터 보호

AWS Step Functions

AWS Step Functions 를 사용하면 AWS 환경에서 사용자 고유의 상태 시스템을 자동화할 수 있다. 이를 위해 다양한 상태, 작업, 선택, 오류 처리 등으로 구성된 구조를 포함하는 JSON 기반 Amazon States 언어가 사용된다.

  • 시각적 워크플로우를 사용하는 마이크로 서비스 조정
  • 애플리케이션 기능을 단계별로 실행할 수 있다.
  • 각 단계를 자동으로 트리거하고 추적한다.
  • 단계가 실패한 경우 단순 오류를 파악하여 로깅을 제공