AWS CloudFormation创建堆栈与部署

时间:2018-04-20 15:54:57

标签: amazon-web-services amazon-cloudformation aws-cli

有人可以清楚地向我解释 AWS CLI Cloudformation create-stackdeploy命令之间的区别和优先级吗?对我来说,似乎他们做同样的事情并部署资源。

为什么当您从cli运行deploy命令时,create stack没有可执行的更改集,而文档说:

  

通过创建并执行更改集来部署指定的AWS CloudFormation模板。 AWS CloudFormation执行更改集后,该命令将终止。如果要在AWS CloudFormation执行之前查看更改集,请使用--no-execute-changeset标志。

2 个答案:

答案 0 :(得分:15)

deploy只能在您知道要创建新堆栈时使用。如果要更新堆栈,则必须使用其他命令等。如果您正在编写(ug)批处理文件以帮助运行您的cloudformation,这可能会非常痛苦。

--no-execute-changeset是更好地利用变更集的功能 - 而不是必须知道堆栈是否存在,您可以简单地运行deploy,工具将弄清楚它需要做什么。使用{{1}},如果您决定在应用更改之前查看更改,它实际上将为您提供所需的命令。

看起来这是在2016年11月推出的,可能是在发布变更集的时候。

答案 1 :(得分:2)

我假设deploy只是CreateChangeSetCreateStackUpdateStack api方法周围的“语法糖”。

请注意,尽管deploy is in the CLInot in the API reference

我认为,deploy是首选,无需明确检查变更集。如果不使用deploy,则可能需要create-change-set然后决定是创建还是更新堆栈。在这种情况下,部署就像一个堆栈“ upsert”。


我不再懒惰并检查代码,是的-deploy最终是从CLI使用cloudformation的更好方法。实现是herehere。请注意,截至this issuedeploy中尚无控制回滚行为的功能。