Я успешно просмотрел и реплицировал блог AWS Lambda Destination без изменения примера кода из блога.
Я бы посоветовал вам просмотреть конфигурацию SNS (и при необходимости изменить регион us-west-2 на свой AWS регион использования) и проверить, соответствует ли он следующему:
1. На вашем SNS topi c ( 'arn: aws: sns: us-west-2: 1234567890: YourSNSTopicOnSuccess' ), перейдите к политике доступа и проверьте, есть ли у вас политика, подобная следующей:
{
"Version": "2008-10-17",
"Id": "__default_policy_ID",
"Statement": [
{
"Sid": "__default_statement_ID",
"Effect": "Allow",
"Principal": {
"Service": "lambda.amazonaws.com"
},
"Action": [
"SNS:GetTopicAttributes",
"SNS:SetTopicAttributes",
"SNS:AddPermission",
"SNS:RemovePermission",
"SNS:DeleteTopic",
"SNS:Subscribe",
"SNS:ListSubscriptionsByTopic",
"SNS:Publish",
"SNS:Receive"
],
"Resource": "arn:aws:sns:us-west-2:1234567890:YourSNSTopicOnSuccess"
}
]
}
2. В вашей роли Lambda ('arn: aws: iam :: 1234567890: role / YourLambdaDestinationRole') , убедитесь в следующем:
(i) «Доверительные отношения» вашей роли имеют следующее утверждение:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service":"lambda.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
(ii) Роль Lambda имеет прикрепленный документ политики, подобный приведенному ниже:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"sns:publish"
],
"Resource": "*"
}
]
}
Успешно опубликованное сообщение от Amazon Lambda к SNS topi c должно вывести что-то похожее на:
{"version":"1.0","timestamp":"2020-03-22T16:29:50.528Z","requestContext":{"requestId":"43d109d2-54be-4e2e-b8d8-2757e3f06f76","functionArn":"arn:aws:lambda:eu-west-1:1234567890:function:event-destinations:$LATEST","condition":"Success","approximateInvokeCount":1},"requestPayload":{ "Success": true },"responseContext":{"statusCode":200,"executedVersion":"$LATEST"},"responsePayload":null}
Надеюсь, это поможет.