Amazon API Gateway에서 HTTP API가 반환한 상태 코드를 매핑하고 싶습니다.
해결 방법
백엔드인 응답 상태 코드를 재정의하려면 API Gateway 매핑 템플릿 또는 정규 표현식을 사용하여 상태 코드를 매핑하십시오. 이 작업은 HTTP API와의 프록시 및 비프록시 통합에서 수행할 수 있습니다.
HTTP API로 작업
HTTP API를 REST API와 비교한다면 설계가 다릅니다. HTTP API는 기본 프록시에 의해 통합되며 같은 응답을 반환합니다. REST API와 달리 HTTP API는 Lambda 통합에 사용할 수 있는 두 가지 페이로드 형식 버전을 제공합니다. 1.0 및 2.0 페이로드 형식 버전의 경우, 연합 Lambda 함수 응답 형식이 있습니다.
페이로드 형식 버전 2.0을 사용할 때 Lambda 함수가 유효한 JSON 응답으로 상태 코드를 명시적으로 전달하지 않으면 API Gateway는 다음을 가정합니다.
- IsBase64Encoded가 false입니다.
- statusCode가 200입니다.
- content-type은 application/json입니다.
- body은 Lambda 함수의 응답입니다.
이전 예제에서 HTTP API는 그 어떤 오류도 반환하지 않지만, 가정된 상태 코드 200을 전달합니다.
페이로드 형식 버전 1.0을 사용하면, Lambda 통합은 다음 형식으로 응답을 반환해야 합니다. API 게이트웨이는 응답을 가정하지 않고 500 오류를 반환합니다.
{
"isBase64Encoded": true|false,
"statusCode": httpStatusCode,
"headers": { "headername": "headervalue", ... },
"multiValueHeaders": { "headername": ["headervalue", "headervalue2", ...], ... },
"body": "..."
}
상태 코드 매핑
반환된 백엔드인 응답 키를 기반으로 상태 코드를 정적 값에 매핑하려면 다음을 수행합니다.
- HTTP API에 구성된 통합으로 이동합니다.
- 수정할 통합 경로를 선택합니다. 통합 관리를 선택합니다. 파라미터 매핑으로 스크롤한 다음 파라미터 매핑 생성을 선택합니다.
- 매핑 유형을 **응답(상태 코드에 기반함)**으로 설정합니다. 이 상태 코드와 일치하는 통합 응답에는 파라미터 매핑이 적용되어야 하므로 응답 상태 코드도 설정하십시오.
- 새 매핑 추가를 선택합니다.
- 수정할 파라미터에서 statusCode를 선택합니다. 수정 유형을 덮어쓰기로 설정합니다.
- 값을 정적 값으로 설정합니다.
참고: 이 값은 클라이언트에 전송되어야 합니다.
- 생성을 선택합니다.
관련 정보
REST API용 매핑 템플릿
API Gateway의 HTTP API에 대한 API 요청 및 응답 변환