내 Amazon API Gateway API에 대해 AWS Lambda 함수를 비동기식으로 간접 호출하고 싶습니다. 함수를 동기식으로 간접 호출하고 싶지 않습니다.
해결 방법
REST API
Lambda 비프록시 통합에서 Lambda는 기본적으로 백엔드 함수를 동기식으로 간접 호출합니다. 백엔드 함수를 비동기식으로 간접 호출하려면 Lambda 호출 유형을 Event로 설정합니다.
다음 단계를 완료하십시오.
- API Gateway 콘솔을 엽니다.
- API를 선택한 다음 REST API를 선택합니다.
- Resources(리소스)에서 GET을 선택한 다음 Integration request(통합 요청)를 선택합니다.
- Integration type(통합 유형)에서 Lambda Function(Lambda 함수)을 선택합니다.
- URL request headers parameters(URL 요청 헤더 파라미터)를 확장한 다음 Add request header parameter(요청 헤더 파라미터 추가)를 선택합니다.
- Name(이름)에 X-Amz-Invocation-Type을 입력합니다.
- Mapped from(다음에서 매핑됨)에 Event를 입력합니다.
- REST API를 재배포합니다.
비동기식 또는 동기식 옵션을 사용하여 Lambda 함수를 간접 호출하려면 InvocationType 헤더를 추가합니다.
다음 단계를 완료하십시오.
-
API Gateway 콘솔을 엽니다.
-
API를 선택한 다음 REST API를 선택합니다.
-
Resources(리소스)에서 GET을 선택한 다음 Method request(메서드 요청)를 선택합니다.
-
Request validator(요청 검사기)에서 Edit(편집) 아이콘을 선택합니다.
-
드롭다운 목록을 선택한 다음 Validate query string parameters and headers(쿼리 문자열 파라미터 및 헤더 검사)를 선택합니다.
-
Save(저장) 아이콘을 선택합니다.
-
HTTP request headers(HTTP 요청 헤더)를 확장한 다음 Add header(헤더 추가)를 선택합니다.
-
Name(이름)에 InvocationType을 입력한 다음 Required(필수)를 선택합니다.
-
Integration Request(통합 요청)에서 URL request headers parameters(URL 요청 헤더 파라미터)를 확장한 다음 Add request header parameter(요청 헤더 파라미터 추가)를 선택합니다.
-
Name(이름)에 X-Amz-Invocation-Type을 입력합니다.
-
Mapped from(다음에서 매핑됨)에 method.request.header.InvocationType을 입력합니다.
-
REST API를 재배포합니다.
클라이언트는 비동기식 간접 호출의 경우 API 요청에 InvocationType: Event 헤더를 포함하거나 동기식 간접 호출의 경우 InvocationType: RequestResponse 헤더를 포함할 수 있습니다.
HTTP API
HTTP API는 Lambda에 대한 프록시 통합만 지원합니다. HTTP API용 API Gateway 통합에서는 X-Amz-Invocation-Type 헤더를 설정할 수 없습니다. 대신, 하나는 프록시 역할을 하는 두 개의 Lambda 함수를 사용하십시오. 한 Lambda 함수를 다른 Lambda 함수에서 간접 호출하려면 Invoke API를 사용하고 첫 번째 Lambda 함수에서 InvocationType을 Event로 설정하십시오.
구성 예시:
HTTP API는 Lambda1을 동기식으로 호출하고, Lambda1은 Lambda2를 비동기식으로 간접 호출합니다.