Amazon web services AWS:使用CloudFormation将死信队列(DLQ)附加到SNS发布到Lambda的正确方法
我正试图通过CloudFormation向SNS和Lambda之间的订阅添加DLQ,以捕获无法传递的消息 我通过以下方式实现了这一目标:Amazon web services AWS:使用CloudFormation将死信队列(DLQ)附加到SNS发布到Lambda的正确方法,amazon-web-services,amazon-cloudformation,amazon-sns,Amazon Web Services,Amazon Cloudformation,Amazon Sns,我正试图通过CloudFormation向SNS和Lambda之间的订阅添加DLQ,以捕获无法传递的消息 我通过以下方式实现了这一目标: 在Lambda CloudFormation中创建SNS“Events”属性 使用RedrivePolicy的DLQ和与SNS相同的端点创建SNS订阅 我必须创建这两个资源,因为Lambda SNS Events属性没有DLQ的属性 这是正确的方法吗?我需要同时配置SNSEvent和订阅,这感觉不对。但这是我能找到的唯一能让我将DLQ附加到SNS订阅的方法 如
#ReceivedRequestSNS角色
收到的请求:
类型:AWS::SNS::Topic
特性:
主题名称:!附属的
-${StackName}-ReceivedRequests-${Stage}
-StackName:!参考AWS::StackName
舞台:!参考阶段
#SNS的DLQ
收到的请求SSNSDLQ:
类型:AWS::SQS::队列
特性:
队列名称:{“Fn::Sub”:“${AWS::StackName}-ReceivedRequestsDLQ}
MessageRetentionPeriod:1209600
可视性超时:5
#订阅
ReceivedRequestsToLambda请求:
类型:AWS::SNS::订阅
特性:
协议:lambda
端点:!附属的
-${LambdaArn}:实时
-{LambdaArn:!GetAtt培训通知requestshandler.Arn}
红河政策:
死信目标:!GetAtt接收请求SSNSDLQ.Arn
托皮卡恩:!参考收到的请求
#DLQ策略
收到的请求NSDLQ政策:
类型:AWS::SQS::QueuePolicy
特性:
政策文件:
版本:“2012-10-17”
声明:
-
效果:允许
校长:“*”
操作:sqs:SendMessage
资源:!GetAtt接收请求SSNSDLQ.Arn
队列:
- !Ref接收请求SSNSDLQ
[...]
培训通知询问者:
类型:AWS::Serverless::Function
特性:
Handler:'com.test.traininglambda.lambda.handlers.TrainingNotificationRequestsHandler::HandlerRequest'
运行时:java8
死信队列:
类型:SQS
塔吉特兰:!GetAtt培训通知请求Shandlerdlq.Arn
活动:
第七点:
类型:SNS
特性:
主题:!参考收到的请求
作为Lambda定义一部分的SNS事件只是一个包装器,当SAM生成最终模板时,它将转换为订阅。如果已经单独定义了订阅,则不需要这样做。SNS事件作为Lambda定义的一部分只是一个包装器,在SAM生成最终模板时将转换为订阅。如果已经单独定义了订阅,则不需要这样做。