Lambda 통합 또는 Lambda 권한 부여자와 함께 사용하는 API Gateway HTTP API의 권한 오류를 해결하려면 어떻게 해야 하나요?

3분 분량
0

API Gateway HTTP API를 사용해 AWS Lambda 함수를 호출하려고 하면 “내부 서버 오류” 메시지가 표시됩니다. Amazon CloudWatch Logs에서 “doesn't have permissions to call the integration” 또는 “doesn't have permissions to call the authorizer” 오류가 표시됩니다.

간략한 설명

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

  • Lambda 통합과 함께 사용하는 HTTP API의 경우: "integrationError": "The IAM role configured on the integration or API Gateway doesn't have permissions to call the integration. Check the permissions and try again."
  • Lamda 권한 부여자와 함께 사용하는 HTTP API의 경우: “authorizerError”: "The IAM role configured on the authorizer or API Gateway doesn't have permissions to call the authorizer. Check the permissions and try again."

이러한 오류를 해결하려면 다음 조치 중 하나를 실행하세요.

API Gateway 콘솔이나 AWS Command Line Interface(AWS CLI)를 사용해 HTTP API에 리소스 기반 Lambda 호출 권한을 추가합니다.

-또는-

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

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

해결 방법

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

API Gateway 콘솔을 사용하여 Lambda 통합 사용 HTTP API에 대한 Lambda 호출 권한 추가

  1. API Gateway 콘솔을 엽니다.
  2. API 창에서 HTTP API의 이름을 선택합니다.
  3. 왼쪽 탐색 창에서 통합을 선택합니다.
  4. 통합 관리를 선택합니다.
  5. Lambda 통합 이름을 찾아 Lambda 통합 이름 옆에 있는 편집 버튼을 선택합니다.
  6. 호출 권한에서 Lambda 함수를 호출할 수 있는 API Gateway 권한 부여를 선택합니다.
    또는, API Gateway에서 Lambda 함수를 호출하는 데 사용할 수 있는 IAM역할 ARN을 제공하세요.
  7. 저장을 선택하고 API 배포를 눌러 API에 Lambda 호출 권한을 추가합니다.

AWS CLI를 사용하여 Lamda 통합 사용 HTTP API에 대한 Lambda 호출 권한 추가

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

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

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

API Gateway 콘솔을 사용하여 Lamda 권한 부여자 사용 HTTP API에 대한 Lambda 호출 권한 추가

  1. API Gateway 콘솔을 엽니다.
  2. API 창에서 HTTP API의 이름을 선택합니다.
  3. 왼쪽 탐색 창에서 권한 부여를 선택합니다.
  4. 권한 부여 관리를 선택합니다.
  5. Lambda 권한 부여자 이름을 찾아 Lambda 권한 부여자 이름 옆에 있는 편집 버튼을 선택합니다.
  6. 호출 권한에서 Lambda 함수를 호출할 수 있는 API Gateway 권한 자동 부여를 선택합니다.
    또는, API Gateway에서 Lambda 함수를 호출하는 데 사용할 수 있는 IAM역할 ARN을 제공하세요.
  7. 저장을 선택하고 API 배포를 눌러 API에 Lambda 호출 권한을 추가합니다.

AWS CLI를 사용하여 Lambda 권한 부여자 사용 HTTP API에 Lambda 호출 권한 추가

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

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

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


AWS 공식
AWS 공식업데이트됨 일 년 전