AWS CloudFormation 또는 OpenAPI(Swagger)를 사용하여 Lambda가 통합된 API Gateway API를 생성했습니다. API 메서드를 호출하려고 할 때 일반 "Execution failed due to configuration" 오류 및 500 상태 코드가 표시되는 이유는 무엇입니까?

최종 업데이트 날짜: 2019년 10월 16일

AWS CloudFormation 템플릿 또는 OpenAPI(Swagger) 정의를 사용하여 AWS Lambda가 통합된 Amazon API Gateway API를 생성했습니다. API 메서드를 호출하려고 하면 함수가 호출되지 않고 일반 "Execution failed due to configuration error:" 메시지와 500 상태 코드가 표시됩니다. 이 오류가 발생하는 이유는 무엇입니까?

간략한 설명

Lambda가 통합된 API Gateway API가 있는 경우 API는 HTTP 메서드 POST를 사용하여 백엔드 Lambda 함수를 호출해야 합니다. 백엔드 통합 요청에 다른 HTTP 메서드(예: ANY 또는 GET)를 사용하는 경우 호출이 실패하고 로그에 다음과 같은 오류 메시지가 표시됩니다.

Mon Oct 14 14:08:49 UTC 2019 : Received response. Status: 403, Integration latency: 3 ms
Mon Oct 14 14:08:49 UTC 2019 : Endpoint response headers: {Date=Mon, 14 Oct 2019 14:08:49 GMT, Content-Length=130, Connection=keep-alive, x-amzn-RequestId=abc1d2ef-34ab-56c7-de8f-90123a456789}
Mon Oct 14 14:08:49 UTC 2019 : Endpoint response body before transformations: <AccessDeniedException>
<Message>Unable to determine service/operation name to be authorized</Message>
</AccessDeniedException>
Mon Oct 14 14:08:49 UTC 2019 : Lambda invocation failed with status: 403. Lambda request id: abc1d2ef-34ab-56c7-de8f-90123a456789
Mon Oct 14 14:08:49 UTC 2019 : Execution failed due to configuration error:
Mon Oct 14 14:08:49 UTC 2019 : Method completed with status: 500

참고: API의 프런트엔드에 대해 모든 HTTP 메서드를 설정할 수 있습니다.

API Gateway 콘솔을 사용하여 Lambda 통합을 구성하면 백엔드 요청이 POST로 설정됩니다. 하지만 CloudFormation 템플릿, OpenAPI 정의 또는 AWS 명령줄 인터페이스(AWS CLI)를 사용하여 Lambda가 통합된 API를 생성할 때 POST 메서드를 직접 지정해야 합니다.

해결 방법

다음 중 하나를 수행하여 백엔드 통합 요청에 대해 HTTP 메서드를 POST로 변경합니다.

API Gateway 콘솔 사용

  1. API Gateway 콘솔에서 API를 선택합니다.
  2. [Resources] 창에서 Lambda가 통합된 HTTP 메서드를 선택합니다.
  3. [Method Execution] 창에서 [Integration Request]를 선택합니다.
  4. [Integration Request] 창의 [HTTP method]에서 [POST]를 선택한 다음 확인 표시 아이콘(Update)를 선택합니다.
  5. API를 배포합니다.
  6. (선택 사항) Lambda가 통합된 HTTP 메서드를 테스트합니다.

자세한 내용은 Amazon API Gateway에서 Lambda가 통합된 REST API 생성API Gateway 콘솔을 사용하여 API 통합 요청 설정을 참조하십시오.

AWS CloudFormation 템플릿 업데이트

CloudFormation 템플릿을 사용하여 API를 생성한 경우 다음을 수행합니다.

  1. 템플릿을 업데이트하여, IntegrationHttpMethod 속성 값을 POST로 설정합니다.
  2. 템플릿을 사용하여 AWS CloudFormation 스택을 업데이트 합니다. 이 작업은 API를 업데이트합니다.

OpenAPI 정의 업데이트

OpenAPI 정의를 사용하여 API를 생성한 경우 다음을 수행합니다.

  1. API 정의를 업데이트하여 httpMethod 속성 값을 POST로 설정합니다. 자세한 내용은 aws-samples GitHub 리포지토리의 x-amazon-apigateway-integration Object예제 Swagger 템플릿을 참조하십시오.
  2. 업데이트된 API 정의 파일을 API Gateway로 가져와 API를 업데이트합니다.