Amazon S3 이벤트 알림을 생성하여 Lambda 함수를 트리거할 때 "Unable to validate the following destination configurations" 오류가 발생하는 이유는 무엇입니까?

최종 업데이트 날짜: 2019년 9월 27일

AWS Lambda 함수를 트리거하기 위해 Amazon Simple Storage Service(Amazon S3)이벤트 알림을 생성하려고 합니다. 오류 메시지 “Unable to validate the following destination configurations. Not authorized to invoke function"가 나타나는 이유는 무엇입니까?

간략한 설명

일반적으로 이 오류는 S3 버킷에 Lambda 함수를 호출할 권한이 없음을 의미합니다. Amazon S3 콘솔을 사용하여 Lambda에 대한 이벤트 알림을 구성할 때 필요한 권한이 함수에 대한 리소스 기반 정책에 자동으로 추가됩니다.

이 오류는 다음과 같은 경우에 발생할 수 있습니다.

  • Lambda 함수의 리소스 기반 정책이 삭제 또는 제거되고 해당 함수에 대한 Amazon S3 이벤트 알림에 대한 변경 사항을 저장하려고 합니다.
  • S3 버킷에는 리소스 기반 정책에 필요한 권한이 없는 Lambda 함수에 대한 기존 이벤트 알림이 있으며, 해당 S3 버킷에 새 이벤트 알림을 저장하려고 합니다.

참고: 권한을 수정했는데 Amazon S3 이벤트 알림이 여전히 Lambda 함수를 트리거하지 않는 경우 Amazon S3 이벤트 알림이 Lambda 함수를 트리거하지 않는 이유는 무엇입니까?를 참조하십시오.

해결 방법

다음 중 하나를 수행합니다.

이벤트 알림 다시 생성

Amazon S3 콘솔에서 이벤트 알림을 삭제한 다음 알림을 다시 추가합니다. 그러면 Lambda 함수의 리소스 기반 정책에 적절한 권한이 추가됩니다.

AWS CLI를 사용하여 권한 추가

Lambda AddPermission API를 사용하여 Lambda 함수의 리소스 기반 정책에 적절한 호출 권한을 추가합니다. AWS 명령줄 인터페이스에서 다음 명령을 실행합니다.

$ aws lambda add-permission --function-name myLambdaFunction --principal s3.amazonaws.com \
--statement-id S3StatementId --action "lambda:InvokeFunction" \
--source-arn arn:aws:s3:::myS3Bucket \
--source-account accountId

참고: myLambdaFunction을 Lambda 함수의 이름으로 바꿉니다. S3StatementId를 고유한 값으로 바꾸어 동일한 정책의 다른 명령문과 구별합니다. arn: aws: s3::: myS3Bucket을 S3 버킷의 Amazon 리소스 이름(ARN)으로 바꿉니다. accountIdAWS 계정 ID로 바꿉니다.

자세한 내용은 이벤트를 게시하도록 Amazon S3 구성AWS 서비스에 함수 액세스 권한 부여를 참조하십시오.