Amazon API Gateway로 API 구축하기

AWS에서 애플리케이션 배포하기

Dunieski Otano

Amazon Web Services Solutions Architect

세 클라이언트, 하나의 백엔드

  • 웹, 모바일, 파트너가 모두 하나의 백엔드를 호출합니다
  • 각각 형식이 조금씩 다릅니다
  • 프런트 도어가 모든 호출을 검증하고 변환합니다

 

세 가지 클라이언트 유형이 단일 API Gateway를 통해 백엔드 서비스로 요청을 라우팅하는 모습

AWS에서 애플리케이션 배포하기

API Gateway의 역할

관리형 프런트 도어 역할을 하는 API Gateway: 웹과 모바일 클라이언트가 라우팅, 인증, 스로틀링, 변환 기능을 갖춘 중앙 게이트웨이를 거쳐 Lambda, HTTP 엔드포인트, AWS 서비스로 연결되는 모습

  • API를 위한 완전 관리형 프런트 도어
  • 라우팅, 인증, 스로틀링, 변환을 처리합니다
  • 클라이언트와 백엔드 사이에 위치합니다
  • 백엔드: Lambda, HTTP 엔드포인트, AWS 서비스
AWS에서 애플리케이션 배포하기

통합 유형

  • Lambda 프록시: 요청 전체를 Lambda에 전달합니다
  • Lambda 비프록시: 요청과 응답 필드를 매핑합니다
  • HTTP: HTTP 백엔드로 전달합니다
  • MOCK: 백엔드 없이 응답을 반환합니다

네 가지 API Gateway 통합 유형: 전체 요청을 전달하는 Lambda 프록시, 매핑 템플릿을 사용하는 Lambda 비프록시, 엔드포인트로 전달하는 HTTP, 정적 응답을 반환하는 MOCK

AWS에서 애플리케이션 배포하기

요청 및 응답 변환

  • 매핑 템플릿이 VTL로 페이로드 형태를 변환합니다
  • Velocity Template Language가 본문, 헤더, 매개변수를 변환합니다
  • 요청 매핑: 클라이언트 형식을 백엔드 형식으로
  • 응답 매핑: 백엔드 형식을 클라이언트 형식으로

VTL 매핑 템플릿 흐름: 클라이언트 페이로드가 요청 템플릿에 의해 변환되어 백엔드에 전달되고, 백엔드 응답이 응답 템플릿에 의해 변환되어 클라이언트로 반환되는 과정

AWS에서 애플리케이션 배포하기

요청 검증

요청 검증 모드: Lambda 백엔드 호출 전에 JSON 스키마로 본문을 검증하거나, 필수 쿼리 및 헤더 매개변수를 검증하거나, 둘 다 검증하는 방식

  • 잘못된 입력은 백엔드에 도달하기 전에 거부합니다
  • 필수 매개변수: 헤더, 쿼리 문자열, 경로
  • 모델 스키마: JSON 본문 형태를 검증합니다
  • 본문, 매개변수, 또는 둘 다 검증합니다
AWS에서 애플리케이션 배포하기

상태 코드와 오류 계약

  • 일관된 계약을 위해 백엔드 상태 코드를 재정의합니다
  • 백엔드의 502를 클라이언트용 깔끔한 503으로 매핑합니다
  • 게이트웨이 응답: 오류 본문을 커스터마이즈합니다
  • 백엔드와 무관하게 클라이언트는 예측 가능한 오류를 받습니다

전체 API Gateway 요청 수명 주기: 검증이 게이트에서 잘못된 입력을 거부하고, 매핑 템플릿이 유효한 입력을 백엔드용으로 변환하며, 응답 템플릿이 출력을 일관된 클라이언트 계약으로 포맷하는 과정

AWS에서 애플리케이션 배포하기

전체 흐름 정리

  • 클라이언트 요청 → 검증 → 변환 → 백엔드
  • 잘못된 입력은 게이트에서 거부됩니다
  • 올바른 입력은 백엔드용으로 변환됩니다
  • 백엔드 응답은 클라이언트 계약 형식으로 변환됩니다

전체 API Gateway 요청 수명 주기: 검증이 게이트에서 잘못된 입력을 거부하고, 매핑 템플릿이 유효한 입력을 백엔드용으로 변환하며, 응답 템플릿이 출력을 일관된 클라이언트 계약으로 포맷하는 과정

AWS에서 애플리케이션 배포하기

연습해 봅시다!

AWS에서 애플리케이션 배포하기

Preparing Video For Download...