아마존 API Gateway
IT 위키
더 많은 작업
- Amazon API Gateway; API Gateway; 아마존 API 게이트웨이
- REST·HTTP·WebSocket API를 만들고 게시·보호·모니터링하는 AWS의 완전 관리형 API 게이트웨이 서비스
API Gateway는 클라이언트 요청을 받는 정문 역할을 한다. 요청을 받아 인증·권한 확인, 요청 수 제한, 캐싱, 요청·응답 변환을 처리한 뒤 AWS Lambda, HTTP 엔드포인트, 다른 AWS 서비스, VPC 안의 프라이빗 리소스로 넘긴다. 서버를 관리할 필요가 없고 호출 수만큼 과금되므로 Lambda와 묶어 서버리스 API를 만드는 데 가장 흔히 쓴다. API 설계 일반론은 RESTful API 문서를 참고한다.
| 구분 | REST API | HTTP API | WebSocket API |
|---|---|---|---|
| 성격 | 기능이 가장 많은 RESTful API | 기능을 줄이고 더 낮은 가격으로 제공하는 RESTful API | 클라이언트와 백엔드 사이 양방향 상태 유지 연결 |
| 엔드포인트 유형 | 엣지 최적화, 리전, 프라이빗 | 리전 | 리전 |
| 인증·권한 부여 | IAM, 리소스 정책, 아마존 Cognito, Lambda 권한 부여자 | IAM, 아마존 Cognito, Lambda 권한 부여자, JWT 권한 부여자 | IAM, Lambda 권한 부여자 |
| API 키·사용량 계획 | 지원 | 미지원 | 미지원 |
| 캐싱 | 지원 | 미지원 | 해당 없음 |
| AWS WAF 연동 | 지원 | 미지원 | 미지원 |
| 요청 검증·본문 변환 | 지원 | 미지원(파라미터 매핑만) | 라우트별 매핑 |
| 배포 | 사용자 제어 배포, 카나리 릴리스 | 자동 배포 지원 | 사용자 제어 배포 |
| 대표 용도 | 공개 API 상품화, 세밀한 보안·제어가 필요한 API | 단순한 Lambda·HTTP 프록시 API, 비용 절감 | 채팅, 실시간 알림, 대시보드, 게임 |
AWS 설명서는 API 키, 클라이언트별 스로틀링, 요청 검증, AWS WAF 연동, 프라이빗 엔드포인트가 필요하면 REST API를, 그렇지 않으면 HTTP API를 고르라고 안내한다.
- Lambda 프록시 통합: 요청 전체(경로, 헤더, 쿼리 문자열, 본문)를 정해진 JSON 형식으로 Lambda에 넘기고, 함수가 상태 코드·헤더·본문을 직접 돌려준다. 설정이 가장 간단해 가장 많이 쓴다.
- Lambda 비프록시(사용자 지정) 통합: 매핑 템플릿으로 요청·응답을 변환한다(REST API).
- HTTP 통합: 외부 또는 내부 HTTP 엔드포인트로 전달한다.
- AWS 서비스 통합: Lambda 없이 SQS, Step Functions, DynamoDB, Kinesis 등의 API를 직접 호출한다. 단순 전달 목적이면 Lambda 비용과 지연을 줄일 수 있다.
- 프라이빗 통합: VPC 링크로 VPC 안의 NLB·ALB 뒤 서비스에 연결한다.
- 모의 통합(mock): 백엔드 없이 고정 응답을 돌려준다(REST API).
| 유형 | 동작 | 적합한 경우 |
|---|---|---|
| 엣지 최적화 | 가장 가까운 CloudFront 엣지 로케이션으로 요청을 받음. REST API 기본값 | 전 세계에 흩어진 클라이언트 |
| 리전 | 해당 리전에서 직접 받음. 직접 만든 CloudFront 배포나 Route 53 지연 시간 기반 라우팅과 조합 가능 | 같은 리전 클라이언트, 다중 리전 구성, CDN 설정을 직접 제어하려는 경우 |
| 프라이빗 | VPC의 인터페이스 VPC 엔드포인트를 통해서만 접근 | 사내 전용 API, 인터넷 노출 금지 |
- API 정의를 바꾼 뒤 배포(deployment)를 만들어 스테이지(dev, prod 등)에 연결해야 반영된다. HTTP API는 자동 배포를 켤 수 있다.
- 스테이지 변수로 스테이지마다 다른 Lambda 별칭이나 백엔드 주소를 가리킬 수 있다.
- REST API는 카나리 릴리스로 새 배포에 트래픽 일부만 보낼 수 있다.
- 계정·리전 단위로 모든 API를 합쳐 초당 10,000건의 정상 상태 요청과 토큰 버킷 방식의 버스트(최대 5,000건)가 기본 한도이다. 넘으면 클라이언트는 429 Too Many Requests를 받는다.
- 스테이지와 메서드 단위로 더 낮은 스로틀 한도를 걸 수 있다.
- 사용량 계획(usage plan)은 API 키별로 초당 요청 한도(rate·burst)와 일·주·월 할당량을 정한다. 외부 고객에게 API를 등급별로 판매할 때 쓴다(REST API).
- API 키는 사용량을 식별·제한하는 용도이며 그 자체로 인증 수단으로 쓰면 안 된다. 인증은 IAM, Cognito, Lambda 권한 부여자로 한다.
REST API는 스테이지에 캐시를 켜 백엔드 응답을 TTL 동안 저장한다. 기본 TTL은 300초, 최대 3,600초이며 0이면 캐시를 쓰지 않는다. 메서드별로 캐시 설정을 덮어쓸 수 있고, 캐시 키에 넣을 파라미터를 고를 수 있다. 캐시 용량에 따라 시간당 요금이 붙는다.

| 방식 | 동작 | 적합한 경우 |
|---|---|---|
| IAM 권한 | 서명 버전 4로 서명된 요청을 IAM 정책으로 검사 | AWS 내부 서비스나 IAM 자격 증명을 가진 클라이언트 |
| 리소스 정책 | 특정 계정, IP 범위, VPC 엔드포인트에서 온 요청만 허용(REST API) | 프라이빗 API 접근 제한, IP 차단 |
| 아마존 Cognito 사용자 풀 | Cognito가 발급한 토큰 검증 | 웹·모바일 앱 최종 사용자 로그인 |
| Lambda 권한 부여자 | 토큰이나 요청 파라미터를 Lambda가 검사해 IAM 정책 반환 | 자체 인증 체계, 서드파티 OAuth·SAML 토큰 검증 |
| JWT 권한 부여자 | OIDC·OAuth 2.0 JWT를 직접 검증(HTTP API) | 외부 IdP 토큰을 코드 없이 검증 |
- 통합 제한 시간은 50밀리초~29초이다. 리전·프라이빗 REST API는 29초보다 늘릴 수 있지만 계정 스로틀 한도가 줄어들 수 있다.
- REST API 페이로드는 10MB까지이다.
- WebSocket 연결은 최대 2시간 유지되고, 10분 동안 아무 메시지가 없으면 끊긴다.
- "서버리스 REST API"는 API Gateway + Lambda(+ DynamoDB) 조합이 기본 답이다.
- API 키별 요청 제한·할당량, 캐싱, AWS WAF, 프라이빗 API가 필요하면 REST API이다. 단순 프록시이고 비용을 줄이려면 HTTP API이다.
- 실시간 양방향 통신은 WebSocket API이다.
- 백엔드 과부하 방지는 스로틀링과 캐싱, 급증 요청 흡수는 API Gateway 뒤에 아마존 SQS를 두는 비동기 패턴으로 해결한다.
- VPC 안에서만 호출되는 내부 API는 프라이빗 엔드포인트 + 인터페이스 VPC 엔드포인트 + 리소스 정책이다.
- 처리 시간이 29초를 크게 넘는 작업은 동기 API로 기다리지 말고, 요청을 접수만 하고 SQS·Step Functions로 비동기 처리한다.
- REST API와 HTTP API 중에서 선택 – AWS
- API Gateway의 REST API 엔드포인트 유형 – AWS
- Amazon API Gateway 할당량 – AWS
- API Gateway의 REST API 캐시 설정 – AWS
- API Gateway Lambda 권한 부여자 사용 – AWS