AWS API Gateway
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가 생성된 것을 확인할 수 있음
- Resource
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 언어가 사용된다.
- 시각적 워크플로우를 사용하는 마이크로 서비스 조정
- 애플리케이션 기능을 단계별로 실행할 수 있다.
- 각 단계를 자동으로 트리거하고 추적한다.
- 단계가 실패한 경우 단순 오류를 파악하여 로깅을 제공