我正在尝试创建sns订阅但我收到模板验证错误。
'MySNSTopic'是名为testsnstopic的cloudformation堆栈的逻辑ID。
这是对的吗?任何人都可以解释我应该为这里的“Ref”赋予什么价值
"TopicArn" : {
"Ref": "MySNSTopic"
}
模板验证错误:
Template format error: Unresolved resource dependencies [MySNSTopic] in the Resources block of the template
代码:
{
"Resources": {
"MySubscription" : {
"Type" : "AWS::SNS::Subscription",
"Properties" : {
"Endpoint" : "test@abc.com",
"Protocol" : "email",
"TopicArn" : {
"Ref": "MySNSTopic"
}
}
}
}
}
答案 0 :(得分:1)
要在不同堆栈中使用属性,您需要在一端显式导出值并导入另一个堆栈。
在你的情况下,你可能需要这样的东西:
Stack:sns-test
{
"Resources": {
"MySNSTopic": {
"Type": "AWS::SNS::Topic"
}
},
"Outputs": {
"MySNSTopicOutput": {
"Description": "SNS topic arn",
"Value": {
"Ref": "MySNSTopic"
},
"Export": {
"Name": {
"Fn::Sub": "${AWS::StackName}-MySNSTopicExport"
}
}
}
}
}
Stack:sns-subscription
{
"Resources": {
"MySubscription": {
"Type": "AWS::SNS::Subscription",
"Properties": {
"Endpoint": "jens@apimeister.com",
"Protocol": "email",
"TopicArn": {
"Fn::ImportValue" : "sns-test-MySNSTopicExport"
}
}
}
}
}