AWS 서버리스: API 게이트웨이

jisoolee·2023년 5월 28일
0

AWS Associate Developer

목록 보기
20/27

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 게이트웨이의 메서드 레벨에서 설정된다.

Lambda Authorizer(formerly Custom Authorizers)

: 베어러 토큰을 이용하는 토큰 기반 권한 부여자

  • 요청 기반 매개변수를 헤더나 쿼리 문자열을 통해 람다 권한 부여자로 통과시킨다.
  • 이 경우에 인증은 외부에서 이루어지기 때문에 사용자 인증이 어디서 이루어질지는 본인이 정한다. 람다의 권한부여는 함수에서 이루어진다.

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

To configure a usage plan

  1. 하나 이상의 API를 생성해야 하고 API 키를 요구할 메서드를 구성한다. 그리고 단계에 API를 배포한다.
  2. API 키를 생성하거나 불러와서 애플리케이션 개발자에게 배포한다.
  3. 원하는 대로 조절과 할당량 제한을 걸어 사용량 설정을 생성한다.
  4. 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을 제공하는 것이 목적

0개의 댓글