我如何 运行 AWS Lambda 函数让我知道 CloudFormation 已完成整个堆栈创建

How do I run a AWS Lambda function to let me know that CloudFormation has completed the entire stack creation

我想在 CloudFormation 完成整个堆栈创建(实例部署、VPC 设置、Puppet 脚本等)后立即自动调用自定义程序 API。

解决这个问题的正确方法是什么?

经过一些研究,启动由堆栈创建成功完成的事件触发的 AWS Lambda 函数似乎是一个不错的选择,但我不知道如何处理这个问题。

如有任何想法或建议,我们将不胜感激。

您可以使用 CloudFormation、DependsOn 属性和嵌套的 CloudFormation 堆栈来配置和协调您正在讨论的许多内容(VPC 的设置等)。通过这种方式,您可以命令 CloudFormation 堆栈的执行,例如,首先创建您的 VPC,然后启动您的 EC2 实例,然后在实例上部署软件。

您还可以使用 AWS::CloudFormation::Init[=26= 协调您提到的其他行为的执行(部署 [on] 实例、[调用] Puppet 脚本等) ].这样,您就可以从 CloudFormation 模板中的 EC2 实例调出 Puppet 脚本。 Puppet 脚本的实际执行发生在 EC2 实例上。

如果您想查看从 CloudFormation 调用配置管理工具的示例(在本例中,我们使用的是 Chef Solo),请参阅 app-instance.json。 如果您想查看使用嵌套堆栈的示例,请参阅 dromedary-master.json

我们的博客 (Stelligent) 上也有一些使用 Lambda 的示例,但根据您要解决的问题,在这种情况下您似乎不需要使用 Lambda。

P.S。您也 没有 使用嵌套堆栈,但它可以使事情变得更简洁。但是,您确实 想要控制资源的创建顺序,因此 DependsOn 属性将帮助您这样做。