Cloudformation SNS模板验证错误

时间:2017-12-21 03:24:43

标签: amazon-cloudformation amazon-sns

我正在尝试创建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"
    }
  }
}
}
}

1 个答案:

答案 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"
        }
      }
    }
  }
}