AWS API Gateway
- API Gateway가 요청할 수 있는 최대 시간은 29초
Integrations High Level
- Lambda Function
- HTTP
- AWS Service
Endpoint Types
- Edge-Optimized(default): 글로벌 클라이언트
- Regional: 모든 사용자사 API 게이트웨이를 만든 리전 내에 위치할 것으로 예상할 때
- Private
Security
- User Authentication through: IAM Role, Cognito, Custom Authorizer
- AWS Certificate Manager(ACM) 서비스와 통합한 사용자 지정 도메인 이름으로 HTTPS 보안 설정
IAM Permission
: 사용자 역할에 연결하고 API 게이트웨이를 호출할 수 있다.
- 이 경우 인증은 IAM을 통해 진행되고 권한 부여는 IAM 정책에 의해 진행된다.
Resource Policies
: API 게이트웨이에 인접 정책의 설정을 허용해 API 게이트웨이에 액세스할 수 있는 대상을 정의한다.
- 주된 사용 사례는 교차 계정 액세스의 사용이다.
Conito User Pools
: 사용자의 수명 주기를 관리한다.
- 사용자들은 Conito 사용자 풀을 통해 인증을 해야 하며 인증은 API 게이트웨이의 메서드 레벨에서 설정된다.
: 베어러 토큰을 이용하는 토큰 기반 권한 부여자
- 요청 기반 매개변수를 헤더나 쿼리 문자열을 통해 람다 권한 부여자로 통과시킨다.
- 이 경우에 인증은 외부에서 이루어지기 때문에 사용자 인증이 어디서 이루어질지는 본인이 정한다. 람다의 권한부여는 함수에서 이루어진다.
Canary Deployment
: API Gateway의 변경 사항에 관해 소량의 트래픽으로 테스트하는 방법을 활성화
Integraion Types
MOCK
: 백엔드로 요청을 전송하지 않고도 응답이 반환
HTTP/AWS(Lambda & AWS Services)
: 백엔드로 향하는 요청을 변경하고, 클라이언트에게 전송하기 전에 백엔드에서 응답을 변경할 수 있다.
AWS_PROXY(Lambda Proxy)
: 클라이언트의 요청은 Lambda에 대한 입력이 된다.
- 매핑 템플릿을 사용할 수도, 헤더 쿼리 문자열 매개변수를 바꿀 수도 없다.
HTTP_PROXY
Mapping Templates(AWS & HTTP Intergration)
- 쿼리 문자열 매개변수의 이름을 바꾸거나, 본문 콘텐츠를 수정하거나 헤더 추가 또는 수정도 가능하다.
- 매핑 템플릿을 설정하려면 콘텐츠 유형을 application/json 또는 application/xml로 설정해야 한다.
JSON to XML with SOAP
Query String parameters
REST API
Caching API responses
- 단계마다 하나의 캐시를 정의한다.
- 메서드에 따라 캐시 설정을 덮어쓰는 것도 가능하다.
- API 게이트웨이 캐싱은 기본 TTL 스테이지에 따라 300초마다 정의된다.
API Gateway Cache Invalidation
- 클라이언트가 Cache-Control:max-age=0라고 하는 쿼리에 있는 헤더를 통해 API Gateway로의 캐시를 무효화할 수 있다.
Usage Plans & API Keys
Usage Plan
: 사용량 계획을 생성하게 되면 누가 API 단계나 메서드에 접근할 수 있는지를 정의한다. 어느 정도로, 얼마나 빠르게 접근하는지도 정하고 어떤 API 키가 사용량 계획에 연결되어 있는지를 보고 클라이언트를 식별하고 접근을 측정한다.
API Keys
: 고객들이 API Gateway를 안전하게 이용하도록 해 주며 고객의 요청을 인증해 준다.
Correct Order for API keys
- 하나 이상의 API를 생성해야 하고 API 키를 요구할 메서드를 구성한다. 그리고 단계에 API를 배포한다.
- API 키를 생성하거나 불러와서 애플리케이션 개발자에게 배포한다.
- 원하는 대로 조절과 할당량 제한을 걸어 사용량 설정을 생성한다.
- API 단계들과 API 키들을 사용량 설정과 연결한다.
Logging & Tracing
CloudWatch Logs
: API Gateway를 통과하는 요청과 응답 내용에 관한 정보를 얻는다.
X-Ray
: API Gateway를 통과하는 요청에 관한 추적 정도를 얻는다.
CloudWatch Metrics
CaheHitCount & CacheMissCount
: 캐시 효율에 관한 정보를 제공한다.
Count
: 주어진 기간의 API 요청 수
IntergrationLatency
: API가 요청을 백엔드에 전달하고 백엔드로부터 응답을 기다리는 시간
Latency
: API Gateway가 클라이언트로부터 요청을 받을 때부터 클라이언트로 응답을 반환할 때까지의 시간
4XX Error(client-side) & 5XX Error(server-side)
API Gateway Throttling
Account Limit
- API 중 하나가 과하게 사용되고 있다면 다른 API도 조절될 수 있는데 이런 경우에 429 너무 많은 요청 오류 코드가 나온다.
- 조절과 성능을 늘릴 수도 있고 단계 한도와 메서드 한도를 설정해서 공격을 당할 경우 각 단계가 요청 할당량을 소진하지 않도록 할 수 있다.
- 고객당 조절을 하고 싶을 경우 사용 계획을 정의할 수 있다.
- Lambda 동시성과 마찬가지로 API 하나가 과부화되고 제한이 없다면 그 때문에 다른 API가 조절될 수 있다.
Errors
4xx means Clinet Errors
- 400: 잘못된 요청
- 403: 액세스 거부, 웹 어플리케이션 방화벽이 요청 거부
- 429: 할당량 초과
5xx means Server Errors
- 502: Lambda 프록시 통합이 잘 응답하지 않음
- 503: 백엔드를 사용할 수 없다.
- 504: 통합 장애
CORS
: 다른 도메인으로부터 오는 API를 호출 받으려면 CORS를 꼭 활성화해야 한다.
HTTP API vs REST API
: HTTP API가 저렴한 비용의 대체 서비스고 프록시 통합만을 지원하며 사용량 설정과 API 키가 없다.
WebSocket API
Connecting to the API
- WebSocket URL: wss://[고유 ID].execute-api.[리전].amazonaws.com /[스테이지-이름]
Client to Server Messaging ConnectionID is re-used
Server to Client Messaging
Routing
: 라우트 선택 표형식을 생성해서 라우팅할 JSON 필드를 선택할 수 있다.
Architecture
: 마이크로서비스를 통합하고 외부 통합 URL을 제공하는 것이 목적