동일한 계정에서 Amazon SNS 주제에 대한 Lambda 함수를 구독하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2021년 4월 22일

내 AWS 계정에서 Amazon Simple Notification Service(Amazon SNS) 주제에 대한 내 AWS Lambda 함수를 구독하고 싶습니다. 어떻게 해야 하나요?

해결 방법

참고: 이 문서의 지침은 자습서: Amazon Simple Notification Service와 함께 AWS Lambda 사용 지침을 따릅니다. 그러나 이 문서에서는 동일 계정 설정 지침을 제공합니다. 사전 요구 사항 및 교차 계정 설정 지침은 자습서를 참조하세요.

1.    다음 명령을 실행하여 Amazon SNS 주제를 생성합니다.

참고: lambda-same-account를 주제에 대해 원하는 이름으로 바꿉니다.

$ aws sns create-topic --name lambda-same-account

명령 출력에 반환되는 주제의 Amazon 리소스 이름(ARN)을 확인합니다. 나중에 이 ARN이 필요합니다.

2.    Lambda가 AWS 리소스에 액세스할 수 있도록 실행 역할을 생성합니다. 역할의 ARN을 기록합니다. 나중에 이 ARN이 필요합니다.

3.    배포 패키지를 만듭니다. (자습서의 1단계와 2단계를 따릅니다.)

4.    다음 명령을 실행하여 Lambda 함수를 만듭니다.

참고: sns-same-account를 함수에 대해 원하는 이름으로 바꿉니다. arn:aws:iam::123456789012:role/service-role/lambda-sns-role을 실행 역할의 ARN으로 바꿉니다.

$ aws lambda create-function --function-name sns-same-account \
--zip-file fileb://function.zip --handler index.handler --runtime nodejs14.x \
--role arn:aws:iam::123456789012:role/service-role/lambda-sns-role \
--timeout 60

명령 출력에서 반환되는 함수의 ARN을 기록합니다. 다음 단계에서 이 ARN이 필요합니다.

5.    다음 명령을 실행하여 Amazon SNS 주제에 대한 Lambda 권한을 추가합니다.

참고: sns-same-account를 함수에 부여한 이름으로 바꿉니다. arn:aws:sns:us-east-1:123456789012:lambda-same-account를 주제의 ARN으로 바꿉니다.

$ aws lambda add-permission --function-name sns-same-account \
--source-arn arn:aws:sns:us-east-1:123456789012:lambda-same-account \
--statement-id sns-same-account --action "lambda:InvokeFunction" \
--principal sns.amazonaws.com

6.    다음 명령을 실행하여 Amazon SNS 주제에 대한 Lambda 함수를 구독합니다.

참고: arn:aws:sns:us-east-1:123456789012:lambda-same-account를 주제의 ARN으로 바꿉니다. arn:aws:lambda:us-east-1:123456789012:function:sns-same-account를 함수의 ARN으로 바꿉니다.

$ aws sns subscribe --protocol lambda \
--topic-arn arn:aws:sns:us-east-1:123456789012:lambda-same-account \
--notification-endpoint arn:aws:lambda:us-east-1:123456789012:function:sns-same-account

7.    다음 명령을 실행하고 샘플 메시지를 게시하여 구독을 테스트합니다.

참고: arn:aws:sns:us-east-1:123456789012:lambda-same-account를 주제의 ARN으로 바꿉니다.

$ aws sns publish --message "Hello World" --subject Test \
--topic-arn arn:aws:sns:us-east-1:123456789012:lambda-same-account

명령 출력은 메시지가 주제에 게시되었음을 확인하는 메시지 ID를 반환합니다.

8.    (선택 사항) 다음 명령을 실행하여 Amazon CloudWatch Logs에 Lambda 함수가 호출되었는지 확인합니다.
참고: sns-same-account를 함수 이름으로 바꿉니다.

$ aws logs describe-log-streams --log-group-name /aws/lambda/sns-same-account

반환된 logStreamName을 기록합니다. 그런 다음, 다음 명령을 사용하여 로그를 검색합니다.
참고: sns-same-account를 함수의 이름으로 바꾸고 logStreamName을 설명 로그 스트림이 반환한 logStreamName으로 바꿉니다.

$ aws logs get-log-events --log-group-name /aws/lambda/sns-same-account \
--log-stream-name 'logStreamName'

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


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