AWS Lambda 통합 또는 Lambda 권한 부여자 사용 API Gateway HTTP API의 권한 오류를 어떻게 해결합니까?

최종 업데이트 날짜: 2021년 5월 28일

API Gateway HTTP API를 사용하여 AWS Lambda 함수를 호출하려고 하면 “내부 서버 오류” 메시지가 표시됩니다. Amazon CloudWatch Logs에서 “통합을 호출할 수 있는 권한이 없습니다” 또는 “권한 부여자를 호출할 수 있는 권한이 없습니다”라는 오류가 표시됩니다. 이러한 오류의 원인은 무엇이며 어떻게 해결할 수 있습니까?

간략한 설명

API Gateway HTTP API가 Lambda 호출 권한 없이 Lambda 함수를 호출하려고 하면 API Gateway는 내부 서버 오류 메시지를 반환합니다. HTTP API에 대해 CloudWatch 로깅을 활성화한 경우 API Gateway는 액세스 로그에 다음 오류 메시지 중 하나를 기록합니다.

Lambda 통합 사용 HTTP API에 대한 CloudWatch 오류 메시지

“IntegrationError”: “통합 또는 API Gateway에 구성된 IAM 역할에는 통합을 호출할 권한이 없습니다. 권한을 확인하고 다시 시도하세요.“

Lambda 권한 부여자 사용 HTTP API에 대한 CloudWatch 오류 메시지

“authorizerError”: “권한 부여자 또는 API Gateway에 구성된 IAM 역할에는 권한 부여자를 호출할 권한이 없습니다. 권한을 확인하고 다시 시도하세요.“

이러한 오류를 해결하려면 다음 중 하나를 수행합니다.

API Gateway 콘솔 또는 AWS 명령줄 인터페이스(AWS CLI)를 사용하여 HTTP API에 대한 리소스 기반 Lambda 호출 권한을 추가합니다.

-또는-

HTTP API에 함수를 호출할 권한을 부여하는 AWS Identity and Access Management(IAM) 실행 역할을 구성합니다 . 자세한 내용은 API 호출을 위한 API Gateway 권한 모델을 참조하세요.

HTTP API에 Lambda 통합을 사용할 때 발생하는 오류 해결에 대한 자세한 내용은 HTTP API Lambda 통합 문제 해결을 참조하세요.

해결 방법

참고: AWS AWS CLI 명령을 실행할 때 오류가 발생할 경우 AWS CLI의 최신 버전을 사용하고 있는지 확인하세요.

API Gateway 콘솔을 사용하여 Lambda 통합 사용 HTTP API에 대한 Lambda 호출 권한을 추가하려면 다음을 수행합니다.

1.    API Gateway 콘솔API 창에서 HTTP API 이름을 선택합니다.

2.    왼쪽 탐색 창에서 통합(Integrations)을 선택합니다.

3.    통합 관리(Manage integration)를 선택합니다.

4.    Lambda 통합의 이름을 찾습니다. 그런 다음 Lambda 통합 이름 옆에 있는 편집(Edit) 버튼을 선택합니다.

5.    호출 권한의 경우 API Gateway 권한 부여를 선택하여 Lambda 함수를 호출합니다. -또는- API 게이트웨이가 Lambda 함수를 호출하는 데 사용할 수 있는 IAM 역할 ARN을 제공합니다.

6.    저장(Save)을 선택합니다. 그런 다음 API 배포를 선택하여 Lambda 호출 권한을 API에 추가합니다.

AWS CLI를 사용하여 Lambda 통합 사용 HTTP API에 대한 Lambda 호출 권한을 추가하려면 다음을 수행합니다.

다음 add-permission AWS CLI 명령을 실행합니다.

중요: function-name 값을 Lambda 함수의 ARN으로 바꿉니다. source-arn 값을 API의 소스 ARN으로 바꿉니다. statement-id 값을 동일한 정책의 다른 명령문과 구별하는 명령문 식별자로 바꿉니다.

aws lambda add-permission   \
--function-name "$YOUR_FUNCTION_ARN"   \
--source-arn "arn:aws:execute-api:$API_GW_REGION:$YOUR_ACCOUNT:$API_GW_ID/*/$METHOD/$RESOURCE"   \
--principal apigateway.amazonaws.com   \
--statement-id $STATEMENT_ID   \
--action lambda:InvokeFunction

API Gateway 콘솔을 사용하여 Lambda 권한 부여자 사용 HTTP API에 Lambda 호출 권한을 추가하려면 다음을 수행합니다.

1.    API Gateway 콘솔API 창에서 HTTP API 이름을 선택합니다.

2.    왼쪽 탐색 창에서 권한 부여자(Authorizers)를 선택합니다.

3.    권한 부여자 관리(Manage authorizers)를 선택합니다.

4.    Lambda 권한 부여자의 이름을 찾습니다. 그런 다음 Lambda 권한 부여자 이름 옆에 있는 편집(Edit) 버튼을 선택합니다.

5.    호출 권한의 경우 API Gateway 권한 자동 부여를 선택하여 Lambda 함수를 호출합니다. -또는- API Gateway가 Lambda 함수를 호출하는 데 사용할 수 있는 IAM 역할 ARN을 제공합니다.

6.    저장(Save)을 선택합니다. 그런 다음 API 배포를 선택하여 Lambda 호출 권한을 API에 추가합니다.

AWS CLI를 사용하여 Lambda 권한 부여자 사용 HTTP API에 Lambda 호출 권한을 추가하려면 다음을 수행합니다.

다음 add-permission AWS CLI 명령을 실행합니다.

중요: function-name 값을 Lambda 함수의 ARN으로 바꿉니다. source-arn 값을 API의 소스 ARN으로 바꿉니다. statement-id 값을 동일한 정책의 다른 명령문과 구별하는 명령문 식별자로 바꿉니다.

aws lambda add-permission   \
--function-name "$YOUR_FUNCTION_ARN"   \
--source-arn "arn:aws:execute-api:$API_GW_REGION:$YOUR_ACCOUNT:$API_GW_ID/authorizers/$AUTHORIZER_ID"   \
--principal apigateway.amazonaws.com   \
--statement-id $STATEMENT_ID   \
--action lambda:InvokeFunction

이 문서가 도움이 되었나요?


결제 또는 기술 지원이 필요하세요?