Amazon API Gateway
개발자 안내서

Amazon API Gateway 개념

API Gateway

API Gateway는 다음을 지원하는 AWS 서비스입니다.

  • 백엔드 HTTP 엔드포인트, AWS Lambda 함수 또는 기타 AWS 서비스를 노출하기 위한 REST 애플리케이션 프로그래밍 인터페이스(API)의 생성, 배포, 관리.

  • AWS Lambda 함수 또는 기타 AWS 서비스를 노출하기 위한 WebSocket의 생성, 배포 및 관리.

  • 프런트 엔드 HTTP 및 WebSocket 엔드포인트를 통해 노출된 API 메서드 호출.

API Gateway REST API

백엔드 HTTP 엔드포인트, Lambda 함수 또는 기타 AWS 서비스와 통합되어 있는 HTTP 리소스와 메서드의 모음입니다. 이 모음은 하나 이상의 단계에 배포할 수 있습니다. 일반적으로 API 리소스는 애플리케이션 로직에 따른 리소스 트리로 정리되어 있습니다. 각 API 리소스는 API Gateway에서 지원하는 전용 HTTP 동사가 있는 API 메서드를 하나 이상 표시할 수 있습니다.

API Gateway WebSocket API

백엔드 HTTP 엔드포인트, Lambda 함수 또는 기타 AWS 서비스와 통합되어 있는 WebSocket 라우팅과 라우팅 키의 모음입니다. 이 모음은 하나 이상의 단계에 배포할 수 있습니다. API 메서드는 프런트 엔드 WebSocket 연결을 통해 호출되며, 이 엔드포인트를 등록된 사용자 지정 도메인 이름과 연결할 수 있습니다.

API 배포

API Gateway API의 특정 시점 스냅샷. 클라이언트가 사용할 수 있게 하려면 배포가 하나 이상의 API 단계와 연결되어 있어야 합니다.

API 개발자

API Gateway 배포를 소유한 AWS 계정(예: 프로그래밍 액세스도 지원하는 서비스 공급자)

API 엔드포인트

API Gateway에서 특정 리전에 배포되는 API의 호스트 이름. 호스트 이름은 {api-id}.execute-api.{region}.amazonaws.com 형식을 갖고 있습니다. 다음 API 엔드포인트 유형이 지원됩니다.

API 키

API Gateway가 REST 또는 WebSocket API를 사용하는 앱 개발자의 식별에 사용하는 영숫자 문자열입니다. API Gateway에서 사용자 대신 REST 키를 생성하거나, 사용자가 CSV 파일에서 API 키를 가져올 수 있습니다. API 키와 Lambda 권한 부여자 또는 사용량 계획을 함께 사용하여 API 액세스를 제어할 수 있습니다.

API 엔드포인트를 참조하십시오.

API 소유자

API 개발자 단원을 참조하십시오.

API 단계

REST 또는 WebSocket API의 수명 주기 상태에 대한 논리적 참조(예: 'dev', 'prod', 'beta', 'v2')입니다. API 단계는 API ID와 단계 이름으로 식별됩니다.

앱 개발자

API 개발자가 배포한 API와 상호 작용하며 AWS 계정이 있거나 없을 수도 있는 앱 생성자. 앱 개발자는 귀하의 고객입니다. 앱 개발자는 일반적으로 API 키로 식별됩니다.

콜백 URL

새 클라이언트가 WebSocket 연결을 통해 연결되면 API 게이트웨이에서 통합을 호출하여 클라이언트의 콜백 URL을 저장할 수 있습니다. 이 콜백 URL을 사용하여 백엔드 시스템에서 클라이언트로 메시지를 보낼 수 있습니다.

개발자 포털

고객이 API 제품(API 게이트웨이 사용량 계획)을 등록, 검색 및 구독하고, API 키를 관리하고, API에 대한 사용 지표를 볼 수 있게 해주는 애플리케이션입니다.

엣지 최적화 API 엔드포인트

CloudFront 배포를 사용하여 일반적으로 AWS 리전 전역에서의 클라이언트 액세스를 지원하면서 특정 리전에 배포되는 API Gateway API의 기본 호스트 이름입니다. API 요청은 지리적으로 다양한 클라이언트를 위해 연결 시간을 일반적으로 향상시키는 가장 가까운 CloudFront 입지 지점(POP)으로 라우팅됩니다.

API 엔드포인트를 참조하십시오.

통합 요청

API Gateway에서 WebSocket API 라우팅 또는 REST API 메서드의 내부 인터페이스로, 여기에서 라우팅 요청의 본문 또는 메서드의 본문 및 파라미터를 백엔드에서 요구하는 형식으로 매핑합니다.

통합 응답

API Gateway에서 WebSocket API 라우팅 또는 REST API 메서드의 내부 인터페이스로, 백엔드에서 클라이언트 앱으로 반환되는 응답 형식으로 받은 상태 코드, 헤더, 페이로드를 여기에서 매핑합니다.

매핑 템플릿

VTL(Velocity Template Language)에 나온 스크립트로, 프런트엔드 데이터 형식으로 된 요청 본문을 백엔드 데이터 형식으로 변환하거나 백엔드 데이터 형식으로 된 응답 본문을 프런트엔드 데이터 형식으로 변환합니다. 통합 요청 또는 통합 응답에 매핑 템플릿이 지정될 수 있습니다. 이들은 컨텍스트 및 단계 변수로 실행 시간에 사용할 수 있는 데이터를 참조할 수 있습니다. 매핑은 요청에 대해 클라이언트에서 백엔드로 통합을 통해 헤더나 본문을 전달하는 자격 증명 변환만큼 간단할 수 있습니다. 백엔드에서 클라이언트로 페이로드가 전달되는 응답의 경우도 마찬가지입니다.

메서드 요청

API Gateway에 있는 REST API 메서드의 퍼블릭 인터페이스로, 파라미터와 본문을 정의합니다. 앱 개발자가 API를 통해 백엔드에 액세스하려면 반드시 이 파라미터와 본문을 요청에 포함시켜 보내야 합니다.

메서드 응답

REST API의 퍼블릭 인터페이스로, 앱 개발자가 API의 응답에 기대하는 본문 모델, 헤더, 상태 코드를 여기서 정의합니다.

모의 통합

모의 통합에서는 통합 백엔드가 없어도 API Gateway에서 직접 API 응답이 생성됩니다. API 개발자는 API Gateway가 모의 통합 요청에 응답하는 방법을 결정합니다. 이를 위해, 메서드의 통합 요청 및 통합 응답을 구성하여 정해진 상태 코드와 응답을 연결합니다.

모델

요청 또는 응답 페이로드의 데이터 구조를 지정하는 데이터 스키마입니다. 모델은 API에서 강력한 형식의 SDK를 생성하는 데 필요합니다. 페이로드를 확인하는 데에도 사용됩니다. 모델은 샘플 매핑 템플릿을 생성해 프로덕션 매핑 템플릿 생성을 시작하기에 편리한 도구입니다. 있으면 유용하기는 하지만 매핑 템플릿을 생성할 때 모델은 필요하지 않습니다.

프라이빗 API

프라이빗 API 엔드포인트를 참조하십시오.

프라이빗 API 엔드포인트

인터페이스 VPC 엔드포인트를 통해 노출되고 클라이언트가 VPC 내부의 프라이빗 API 리소스에 안전하게 액세스할 수 있도록 해주는 API 엔드포인트입니다. 프라이빗 API는 퍼블릭 인터넷과 격리되어 있으며, 액세스 권한이 있는 API Gateway의 VPC 엔드포인트를 사용해야만 액세스할 수 있습니다.

프라이빗 통합

리소스를 퍼블릭 인터넷에 노출하지 않고, 클라이언트가 프라이빗 REST API 엔드포인트를 통해 고객 VPC 내부의 리소스에 액세스할 수 있는 API Gateway 통합 유형입니다.

프록시 통합

REST 또는 WebSocket API에 대해 간소화된 API Gateway 통합 구성. HTTP 프록시 통합 또는 Lambda 프록시 통합으로 프록시 통합을 설정할 수 있습니다. HTTP 프록시 통합에서 API Gateway는 프런트 엔드와 HTTP 백엔드 간에 전체 요청 및 응답을 전달합니다. Lambda 프록시 통합에서 API Gateway는 전체 요청을 백엔드 Lambda 함수의 입력값으로 전송합니다. 그런 다음 API Gateway는 Lambda 함수 출력을 프런트 엔드 HTTP 응답으로 변환합니다. REST API에서 프록시 통합은 프록시 리소스에 가장 많이 사용되며, 복잡한 경로 변수(예: {proxy+})와 완전 포착형(catch-all) ANY 메서드로 표시됩니다.

리전 API 엔드포인트

특정 리전에 배포되고 동일한 AWS 리전에서 EC2 인스턴스와 같은 클라이언트에 서비스를 제공하는 API의 호스트 이름입니다. API 요청은 CloudFront 배포를 거치지 않고 리전별 API Gateway로 직접 지정됩니다. 리전 내 요청의 경우 리전 엔드포인트는 불필요한 왕복을 CloudFront 배포로 우회합니다. 추가로 리전 엔드포인트에 대한 지연 시간 기반 라우팅을 API 개발자가 동일한 리전 API 엔드포인트 구성을 사용하여 여러 리전에 API를 배포할 수 있게 해줌으로써 배포된 각 API에 동일한 사용자 지정 도메인 이름을 설정하고 Route 53에서 지연 시간 기반 DNS 레코드를 구성하여 클라이언트 요청을 지연 시간이 가장 짧은 리전에 라우팅합니다.

API 엔드포인트를 참조하십시오.

라우팅

API Gateway에서 WebSocket 라우팅은 수신 메시지를 메시지 내용에 따라 AWS Lambda 함수 같은 특정 통합으로 연결하는 데 사용됩니다. WebSocket API를 정의할 때 라우팅 키와 통합 백엔드를 지정합니다. 라우팅 키는 메시지 본문의 속성입니다. 수신 메시지에서 라우팅 키가 일치하면 통합 백엔드가 호출됩니다. 일치하지 않는 라우팅 키에 대해 기본 라우팅을 설정하거나, 라우팅을 수행하고 요청을 처리하는 백엔드 구성 요소로 메시지를 전달하는 프록시 모델을 지정할 수도 있습니다.

라우팅 요청

API Gateway에 있는 WebSocket API 메서드의 퍼블릭 인터페이스로, 본문을 정의합니다. 앱 개발자가 API를 통해 백엔드에 액세스하려면 반드시 이 파라미터와 본문을 요청에 포함시켜 보내야 합니다.

라우팅 응답

WebSocket API의 퍼블릭 인터페이스로, 앱 개발자가 API Gateway에 기대하는 본문 모델, 헤더, 상태 코드를 여기서 정의합니다.

사용량 계획

사용량 계획은 선택한 API 클라이언트에게 하나 이상의 배포된 REST 또는 WebSocket API에 대한 액세스를 제공합니다. 사용량 계획을 사용해 조절 및 할당량 제한을 구성할 수 있으며, 이는 개별 클라이언트 API 키에 적용됩니다.

WebSocket 연결

API Gateway는 클라이언트와 API Gateway 자체 사이에 영구적인 연결을 유지합니다. Lambda 함수 등의 백엔드 통합과 API Gateway 사이에는 지속적인 연결이 없습니다. 백엔드 서비스는 클라이언트에서 수신한 메시지의 내용을 토대로 필요에 따라 호출됩니다.