Amazon web services 如何指定';原始消息传递';对于使用AWS CloudFormation的SNS订阅?
我有一个AWS CloudFormation模板,可以创建SNS主题和订阅:Amazon web services 如何指定';原始消息传递';对于使用AWS CloudFormation的SNS订阅?,amazon-web-services,amazon-cloudformation,devops,Amazon Web Services,Amazon Cloudformation,Devops,我有一个AWS CloudFormation模板,可以创建SNS主题和订阅: "AcceptedTopic":{ "Type": "AWS::SNS::Topic", "Properties": { "DisplayName": {"Fn::Join": ["", ["Accepted-", {"Ref": "Env"}]]}, "TopicName": {"Fn::Join": ["
"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本身并不支持这一点。作为替代方案,您可以创建一个Lambda支持的自定义资源来绕过此限制,并改为使用
set subscription attributes
设置该属性。以下是一些有助于实现这一目标的有用资源:
- SNS的API
{
"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"
}
}