내용으로 건너뛰기

Lambda와 통합하는 API Gateway 엔드포인트의 문제를 해결하려면 어떻게 해야 합니까?

3분 분량
0

Amazon API Gateway 엔드포인트를 AWS Lambda와 통합하려고 하는데 오류가 발생했습니다.

해결 방법

수신된 오류에 대해 다음 문제 해결 단계를 따르십시오.

시작하기 전에 Amazon CloudWatch Logs를 활성화하여 API Gateway 오류 문제를 해결하십시오. **Log level(로그 수준)**에서 INFO를 선택하여 모든 요청에 대한 실행 로그를 생성합니다.

API Gateway에 Lambda 함수 권한이 없음

Lambda 함수에 대한 잘못된 권한 오류는 API Gateway에 Lambda 함수를 호출할 권한이 없을 때 발생합니다. 이 문제를 해결하려면 API Gateway REST API에서 발생한 “Lambda 함수에 대한 잘못된 권한” 오류를 해결하려면 어떻게 해야 합니까?를 참조하십시오.

참고: 다른 서비스를 사용하여 AWS CloudFormation과 같은 API Gateway 리소스를 배포하는 경우 AWS::Lambda::Permission 리소스에 대한 권한을 부여하십시오.

스로틀링 발생

많은 수의 요청으로 인해 백엔드 서비스에서 스로틀링이 발생하면 API Gateway API가 내부 서버 오류를 반환할 수 있습니다. 지수 백오프 및 재시도 메커니즘을 활성화한 다음, 요청을 다시 전송하십시오. 문제가 지속되면 API Gateway 할당량을 확인하십시오. 서비스 할당량을 초과한 경우 함수가 스로틀링을 발생시키지 않도록 Lambda 함수의 동시성에 대한 할당량 증가를 요청하십시오.

또한 Lambda 함수 스로틀링 문제로 인해 Rate exceeded429 TooManyRequestsException 오류가 발생할 수 있습니다. 자세한 내용은 "Rate exceeded" 및 "TooManyRequestsException" 스로틀링 오류가 발생하는 Lambda 함수 문제를 해결하려면 어떻게 해야 합니까?를 참조하십시오.

상태 코드 매핑이 잘못되었거나 누락됨

HTTP 상태 코드 매핑이 잘못되었거나 누락된 경우 다음과 유사한 500 오류 메시지가 표시될 수 있습니다.

"Execution failed due to configuration error: Output mapping refers to an invalid method response: 2xx/4xx/5xx".

이 오류를 해결하려면 올바른 상태 코드를 반환하도록 API 작업의 통합 요청 및 응답을 구성하십시오.

Lambda 서비스 예외가 관리되지 않음

Lambda 함수 시간 제한과 같은 Lambda 서비스 예외를 관리하지 않는 경우 Lambda.Unknown 오류가 발생합니다. Lambda 함수 제한 시간 초과를 방지하려면 Lambda 함수 코드를 멱등성으로 만드십시오.

자세한 내용은 API Gateway 및 Lambda의 오류 처리 패턴을 참조하십시오.

Lambda 통합 엔드포인트 시간 초과 문제

API Gateway 통합 시간 초과 기본 할당량 제한은 모든 통합 유형에 대해 29초입니다. Lambda 함수가 응답을 반환하는 데 29초 이상 걸리면 504 엔드포인트 요청 시간이 초과됨 오류와 함께 요청이 실패합니다.

Lambda 함수가 29초 이내에 응답을 반환하는지 확인하십시오. Lambda 함수가 29초 이내에 응답을 반환할 수 없는 경우 통합 시간 초과 제한에 대한 할당량 증가를 제출하십시오.

참고: 리전 API 및 프라이빗 API의 통합 시간 초과를 29초 이상으로 늘릴 수 있습니다. 하지만 통합 시간 초과를 늘리려면 AWS 계정의 리전 수준 스로틀 할당량을 줄여야 할 수 있습니다.

Lambda 함수 출력 JSON 형식이 올바르지 않음

통합된 Lambda 함수의 출력이 REST API에 대해 지정된 JSON 형식을 준수하지 않는 경우 잘못된 형식의 프록시 오류가 발생합니다. 프록시 통합을 위한 Lambda 함수 및 Lambda 권한 부여자의 출력에 올바른 JSON 형식을 사용해야 합니다.

프록시 통합을 위한 Lambda 함수의 예:

{

"isBase64Encoded": true|false,

"statusCode": httpStatusCode,

"headers": { "headerName": "headerValue", ... },

"multiValueHeaders": { "headerName": ["headerValue", "headerValue2", ...], ... },

"body": "..."

}

관련 정보

API Gateway HTTP 간접 호출 오류 문제를 해결하려면 어떻게 해야 합니까?