gpt4 book ai didi

amazon-web-services - 如何使用 AWS CloudFormation 为 SNS 订阅指定 'Raw Message Delivery'?

转载 作者:行者123 更新时间:2023-12-04 08:07:33 26 4
gpt4 key购买 nike

我有一个用于创建 SNS 主题和订阅的 AWS CloudFormation 模板:

"AcceptedTopic":{
"Type": "AWS::SNS::Topic",
"Properties": {
"DisplayName": {"Fn::Join": ["", ["Accepted-", {"Ref": "Env"}]]},
"TopicName": {"Fn::Join": ["", ["Accepted-", {"Ref": "Env"}]]},
"Subscription": [{
"Endpoint": {"Fn::GetAtt" : [ "SomeQueue" , "Arn" ]},
"Protocol": "sqs"
}]
}
}

我需要指定“原始消息传递”订阅属性。我如何在AWS CloudFormation中做到这一点?

最佳答案

现在 AWS CloudFormation 通过 AWS::SNS::Subscription 支持它。因此,不要将订阅添加为主题的属性,而是添加上面链接的订阅资源。

但需要注意的是,如果您已经使用该订阅创建了一个主题,并且现在尝试添加该属性,那么它会因无效参数错误而惨败。 原因是它正在考虑将模板中添加的独立订阅作为新资源并尝试创建它。除了手动删除该订阅之外,我还没有找到解决此问题的好方法,这在生产环境中不是一个好的做法。

我的解决方案是将其分为两个步骤。首先,从主题中删除属性订阅并添加订阅资源。然后,向订阅资源添加新属性。

第一:

{
"AcceptedTopic": {
"Type": "AWS::SNS::Topic",
"Properties": {
"DisplayName": {
"Fn::Join": ["", ["Accepted-", {"Ref": "Env"}]]
},
"TopicName": {
"Fn::Join": ["", ["Accepted-", {"Ref": "Env"}]]
}
}
}
"AcceptedTopicSubscription": {
"TopicArn": { "Ref": "AcceptedTopic" },
"Endpoint": {
"Fn::GetAtt": ["SomeQueue", "Arn"]
},
"Protocol": "Sqs"
}
}

然后:

{
...
"AcceptedTopicSubscription": {
"TopicArn": { "Ref": "AcceptedTopic" },
"Endpoint": {
"Fn::GetAtt": ["SomeQueue", "Arn"]
},
"Protocol": "Sqs",
"RawMessageDelivery": "true"
}
}

关于amazon-web-services - 如何使用 AWS CloudFormation 为 SNS 订阅指定 'Raw Message Delivery'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33675033/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com