Esb*_*ald 6 amazon-sqs amazon-sns aws-cloudformation serverless-framework
更新:Cloudformation 现在支持 SNS 主题过滤器,因此这个问题不再相关,不需要自定义插件或代码。
我正在构建一个包含多个 SNS 主题和多个 Lambda 的系统,每个 Lambda 都从分配的 SQS 队列中读取消息。SQS 队列订阅 SNS 主题,但也有过滤策略,因此消息最终会进入相关的 SQS 队列。
当我在 AWS 控制台中设置订阅时,效果很好。
现在我尝试在代码中执行相同的操作,但 AWS Cloudformation 文档没有描述如何向订阅添加筛选策略。基于这里的 python 示例,我尝试了以下操作:
StopOperationSubscription:
Type: "AWS::SNS::Subscription"
Properties:
Protocol: sqs
TopicArn:
Ref: StatusTopic
Endpoint:
Fn::GetAtt: [StopActionQueue, Arn]
FilterPolicy: '{"value": ["stop"]}'
Run Code Online (Sandbox Code Playgroud)
但后来我得到这个错误:
An error occurred: StopOperationSubscription - Encountered unsupported property FilterPolicy.
Run Code Online (Sandbox Code Playgroud)
如何使用 CloudFormation 设置所需的过滤策略?如果不支持,您建议什么替代方案?
我希望在部署无服务器应用程序时自动设置它,无需手动步骤。
Cloudformation 昨天才开始支持 FilterPolicy。我也挣扎了一段时间:)
句法
JSON
{
"Type" : "AWS::SNS::Subscription",
"Properties" : {
"DeliveryPolicy" : JSON object,
"Endpoint" : String,
"FilterPolicy" : JSON object,
"Protocol" : String,
"RawMessageDelivery" : Boolean,
"Region" : String,
"TopicArn" : String
}
}
Run Code Online (Sandbox Code Playgroud)
YAML
Type: "AWS::SNS::Subscription"
Properties:
DeliveryPolicy: JSON object
Endpoint: String
FilterPolicy: JSON object
Protocol: String
RawMessageDelivery: Boolean,
Region: String
TopicArn: String
Run Code Online (Sandbox Code Playgroud)
参考:
| 归档时间: |
|
| 查看次数: |
13683 次 |
| 最近记录: |