Amazon SNS 주제에 대한 Lambda 함수를 구독하려고 할 때 수신되는 인증 오류를 해결하려면 어떻게 해야 합니까?

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

Amazon Simple Notification Service(Amazon SNS) 주제에 대한 AWS Lambda 함수를 구독할 때 발생하는 오류를 해결하고 싶습니다.

간략한 설명

다른 AWS 계정에 있는 SNS 주제에 대한 Lambda 함수를 구독하려고 할 때 다음 오류가 나타날 수 있습니다. 즉, SNS 주제는 한 계정에 있고 Lambda 함수는 다른 계정에 있습니다.

AWS 명령줄 인터페이스(AWS CLI) 를 사용하는 경우 다음 오류가 발생합니다.

An error occurred (AuthorizationError) when calling the Subscribe operation: The account YOUR_AWS_ACCOUNT_ID_1 is not the owner of the endpoint arn:aws:lambda:us-east-1:YOUR_AWS_ACCOUNT_ID_2:function: your_Lambda_function_ARN

AWS 관리 콘솔을 사용하는 경우 다음 오류가 발생합니다.

Error code: AccessDeniedException - Error message: User: your_IAM_entity is not authorized to perform: lambda:AddPermission on resource: your_Lambda_function_ARN

두 가지 오류 중 하나를 해결하려면 Lambda 함수가 있는 AWS 계정에서 SNS 주제에 대한 Lambda 함수를 구독해야 합니다. Lambda 콘솔 또는 AWS CLI를 사용하여 이 작업을 수행할 수 있습니다.

해결 방법

Lambda 콘솔을 사용합니다.

1.    Lambda 콘솔의 함수 페이지에서 함수를 선택합니다.

2.    개요에서, 트리거 추가를선택합니다. 자세한 내용은 함수 개요 사용을 참조하세요.

3.    트리거 구성에서 트리거 선택을 선택한 다음 SNS를 선택합니다.

4.    SNS 주제의경우 다른 AWS 계정의 SNS 주제 Amazon 리소스 이름(ARN)을 붙여 넣습니다.

5.    트리거 활성화 확인란을 선택합니다.

6.    추가를 선택합니다.

자세한 내용은 콘솔에서 함수 구성을 참조하세요.

중요: 트리거를 추가할 때 다음 오류가 나타날 수 있습니다. 해결하려면, Amazon SNS 주제에 구독자를 추가 시 발생하는 IAM 권한 부여 오류를 어떻게 해결합니까? 를 참조합니다.

An error occurred (AuthorizationError) when calling the Subscribe operation: User: your_IAM_user_or_role is not authorized to perform: SNS:Subscribe on resource: your_SNS_topic_ARN

Lambda 콘솔을 사용하여 SNS 트리거를 추가하면 콘솔은 보안 주체 service:sns.amazonaws.com에서 lambda:InvokeFunction 권한을 자동으로 허용합니다.

AWS CLI 사용

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

1.    Lambda 함수가 있는 AWS 계정에 속한 AWS Identity and Access Management(IAM) 사용자로 AWS CLI를 구성합니다.

aws configure --profile-name your_profile_name

참고: IAM 사용자의 AWS 액세스 키 ID보안 키를 전달해야 합니다.

2.    보안 주체 service:sns.amazonaws.com로부터 lambda:InvokeFunction 권한을 추가하여 SNS 주제에서의 Lambda 호출을 허용합니다.

aws lambda add-permission --function-name your_lambda_function_name --statement-id sns_invoke_permission --action lambda:InvokeFunction --principal sns.amazonaws.com --source-arn your_sns_topic_arn

3.    Lambda 함수를 SNS 주제에 구독합니다.

aws sns subscribe --topic-arn your_sns_topic_ARN --protocol lambda --notification-endpoint your_lambda_function_arn --profile your_profile_name_passed_on_#1
An error occurred (AuthorizationError) when calling the Subscribe operation: User: your_IAM_user_or_role is not authorized to perform: SNS:Subscribe on resource: your_SNS_topic_ARN

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


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