본문으로 이동
메뉴 여닫기
환경 설정 메뉴 여닫기
개인 메뉴 여닫기
로그인하지 않음
지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.
Amazon API Gateway; API Gateway; 아마존 API 게이트웨이
REST·HTTP·WebSocket API를 만들고 게시·보호·모니터링하는 AWS의 완전 관리형 API 게이트웨이 서비스

API Gateway는 클라이언트 요청을 받는 정문 역할을 한다. 요청을 받아 인증·권한 확인, 요청 수 제한, 캐싱, 요청·응답 변환을 처리한 뒤 AWS Lambda, HTTP 엔드포인트, 다른 AWS 서비스, VPC 안의 프라이빗 리소스로 넘긴다. 서버를 관리할 필요가 없고 호출 수만큼 과금되므로 Lambda와 묶어 서버리스 API를 만드는 데 가장 흔히 쓴다. API 설계 일반론은 RESTful API 문서를 참고한다.

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 키

편집 원본 편집
  • 계정·리전 단위로 모든 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이면 캐시를 쓰지 않는다. 메서드별로 캐시 설정을 덮어쓸 수 있고, 캐시 키에 넣을 파라미터를 고를 수 있다. 캐시 용량에 따라 시간당 요금이 붙는다.

인증과 권한 부여

편집 원본 편집
Lambda 권한 부여자로 API 요청을 인증하는 흐름
방식 동작 적합한 경우
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로 비동기 처리한다.