Skip to content

API Gateway 개념


API 게이트웨이

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

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

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

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

API Gateway REST API

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

API Gateway HTTP API

백엔드 HTTP 엔드포인트 또는 Lambda 함수와 통합된 라우팅 및 메서드의 모음이다. 이 모음을 하나 이상의 스테이지로 배포할 수 있다. 각 라우팅은 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가 사용자 대신 API 키를 생성하거나, 사용자가 CSV 파일에서 API 키를 가져올 수 있다. API 키와 Lambda 권한 부여자 또는 사용량 계획을 함께 사용하여 API 액세스를 제어할 수 있다.

API 소유자

API 개발자 단원을 참조한다.

API 스테이지

API의 수명 주기 상태에 대한 논리적 참조(예: 'dev', 'prod', 'beta', 'v2')이다. API 스테이지는 API ID와 스테이지 이름으로 식별된다.

앱 개발자

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

콜백 URL

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

개발자 포털

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

엣지 최적화 API 엔드포인트

일반적으로 AWS 리전 전체에서 클라이언트 액세스가 용이하도록 CloudFront 배포를 사용할 때 지정된 리전에 배포되는 API Gateway API의 기본 호스트 이름이다. API 요청은 지리적으로 다양한 클라이언트를 위해 연결 시간을 일반적으로 향상하는 가장 가까운 CloudFront POP(Point of Presence)로 라우팅된다.

통합 요청

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

통합 응답

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

매핑 템플릿

VTL(Velocity Template Language)에 나온 스크립트로, 프런트엔드 데이터 형식으로 된 요청 본문을 백엔드 데이터 형식으로 변환하거나 백엔드 데이터 형식으로 된 응답 본문을 프런트엔드 데이터 형식으로 변환한다. 통합 요청 또는 통합 응답에 매핑 템플릿이 지정될 수 있다. 이들은 실행 시간에 컨텍스트 및 스테이지 변수로 제공되는 데이터를 참조할 수 있다.

매핑은 요청에 대해 클라이언트에서 백엔드로 통합을 통해 헤더나 본문을 전달하는 아이덴터티 변환만큼 간단할 수 있다. 백엔드에서 클라이언트로 페이로드가 전달되는 응답의 경우도 마찬가지이다.

메서드 요청

API Gateway에 있는 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 통합 유형이다.

프록시 통합

간소화된 API Gateway 통합 구성 HTTP 프록시 통합 또는 Lambda 프록시 통합으로 프록시 통합을 설정할 수 있다.

HTTP 프록시 통합에서 API Gateway는 프런트 엔드와 HTTP 백엔드 간에 전체 요청 및 응답을 전달한다. Lambda 프록시 통합에서 API Gateway는 백엔드 Lambda 함수에 대한 입력으로 전체 요청을 전송한다. 그런 다음 API Gateway가 Lambda 함수 출력을 프런트엔드 HTTP 응답으로 변환한다.

REST API에서 프록시 통합은 프록시 리소스에서 가장 많이 사용되며, 복잡한 경로 변수(예: {proxy+})와 catch-all ANY 메서드로 표시된다.

빠른 생성

빠른 생성을 사용하여 HTTP API 생성을 간소화할 수 있다. 빠른 생성은 Lambda 는 HTTP 통합, 기본 catch-all 라우팅, 변경 사항을 자동 배포하도록 구성된 기본 스테이지를 사용하여 API를 생성한다.

리전 API 엔드포인트

특정 리전에 배포되고 동일한 AWS 리전에서 EC2 인스턴스와 같은 클라이언트에 서비스를 제공하는 API의 호스트 이름이다. API 요청은 CloudFront 배포판을 거치지 않고 리전별 API Gateway로 직접 지정된다. 리전 내 요청의 경우 리전 엔드포인트는 불필요한 왕복을 CloudFront 배포로 우회한다.

추가로 리전 엔드포인트에 대한 지연 시간 기반 라우팅을 API 개발자가 동일한 리전 API 엔드포인트 구성을 사용하여 여러 리전에 API를 배포할 수 있게 지원함으로써, 배포된 각 API에 동일한 사용자 지정 도메인 이름을 설정하고 Route 53에서 지연 시간 기반 DNS 레코드를 구성하여 클라이언트 요청을 지연 시간이 가장 짧은 리전에 라우팅한다.

라우팅

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 자체 사이에 영구적인 연결을 유지한다. API Gateway와 Lambda 함수와 같은 백엔드 통합 사이에는 영구적인 연결이 없다. 백엔드 서비스는 클라이언트에서 수신한 메시지의 내용에 따라 필요 시 호출된다.


References