【问题标题】:CloudFormation: Publish to SNS topicCloudFormation:发布到 SNS 主题
【发布时间】:2025-11-24 21:05:01
【问题描述】:

我用这个资源写了一个 cloudformation 模板来创建一个 SNS 主题。

"mySNS" : {
   "Type" : "AWS::SNS::Topic",
   "Properties" : {
      "Subscription" : [
         { "Endpoint" : { "Fn::GetAtt": [ "myLambda", "Arn" ] }, "Protocol" : "lambda" }
      ],
      "TopicName" : "mySNS"
   }
}

有没有办法从模板中发布到这个 SNS 主题?我在 CloudFormation 模板参考http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sns-topic.html 中找不到任何内容。

【问题讨论】:

  • 你的意思是从执行它的cloudformation堆栈吗?

标签: amazon-web-services amazon-cloudformation amazon-sns


【解决方案1】:

简短回答:没有

长答案/解决方法:AWS CloudFormation 更多的是在 AWS 中定义资源,而不是实际使用它们。但是,如果在此主题中发布对您的配置过程很重要,我建议您创建一个 lambda-backed custom resource。 lambda 然后发布到主题会很简单。

如果你仍然需要帮助来完成它,我可以用一个简短的例子来更新我的答案

【讨论】:

  • 我添加了一个自定义资源来调用 lambda 函数。但是从一个小时开始,cloudformation 堆栈就一直停留在自定义资源创建步骤中。它可能期待 lambda 函数的响应。你能用一个 lambda 函数 sn-p(希望在 python 中)来响应 CFT 吗?
  • 你说得对,CloudFormation 期望被 lambda 回调,即使在失败的情况下也是如此。我强烈建议您使用 cfn-wrapper-python 库为您处理此任务:github.com/ryansb/cfn-wrapper-python
  • 包装器有帮助,但如果 sg 或 nacls 配置错误,您仍然可能会卡住,让堆栈完成的肮脏黑客是转到日志,每次打印事件变量,回调 url是否存在,如果正确的 json 成功消息发送到该 url,堆栈将完成或回滚。
  • @OmegaOdie 是的,这是摆脱困境的好方法。此外还有 AWS 官方支持的新库,这使得卡住(但并非不可能)变得更加困难:github.com/aws-cloudformation/custom-resource-helper
最近更新 更多