我想在CloudFormation完成整个堆栈创建(实例部署,VPC设置,Puppet脚本等)后立即自动调用自定义程序API。
解决这个问题的正确方法是什么?
经过一些研究,似乎一个很好的选择是启动由成功完成堆栈创建的事件触发的AWS Lambda函数,但我不知道如何处理它。
任何想法或建议都将不胜感激。
答案 0 :(得分:0)
您可以使用CloudFormation, DependsOn 属性和嵌套的CloudFormation堆栈来配置和协调您正在谈论的许多内容(VPC的设置等)。这样您就可以命令执行CloudFormation堆栈,例如,首先创建VPC,然后启动EC2实例,然后在实例上部署软件。
您还可以使用 AWS :: CloudFormation :: Init 协调您提到的其他行为(部署[on]实例,[调用] Puppet脚本等)的执行。这样,您就可以从CloudFormation模板中的EC2实例调出Puppet脚本。 Puppet脚本的实际执行发生在EC2实例上。
如果您想查看从CloudFormation调用配置管理工具的示例(在本例中,我们使用的是Chef Solo),请参阅app-instance.json。 如果您想查看使用嵌套堆栈的示例,请参阅dromedary-master.json。
在我们的博客上也有一些使用Lambda的例子(Stelligent),但在这种情况下你似乎不需要根据你想要解决的问题使用Lambda。
P.S。你没有拥有来使用嵌套堆栈,但它可以让事情变得更清晰。但是,您做想要控制资源的创建顺序,因此DependsOn属性将帮助您这样做。