有人可以清楚地向我解释 AWS CLI Cloudformation create-stack
和deploy
命令之间的区别和优先级吗?对我来说,似乎他们做同样的事情并部署资源。
为什么当您从cli运行deploy命令时,create stack没有可执行的更改集,而文档说:
通过创建并执行更改集来部署指定的AWS CloudFormation模板。 AWS CloudFormation执行更改集后,该命令将终止。如果要在AWS CloudFormation执行之前查看更改集,请使用--no-execute-changeset标志。
答案 0 :(得分:15)
deploy
只能在您知道要创建新堆栈时使用。如果要更新堆栈,则必须使用其他命令等。如果您正在编写(ug)批处理文件以帮助运行您的cloudformation,这可能会非常痛苦。
--no-execute-changeset
是更好地利用变更集的功能 - 而不是必须知道堆栈是否存在,您可以简单地运行deploy,工具将弄清楚它需要做什么。使用{{1}},如果您决定在应用更改之前查看更改,它实际上将为您提供所需的命令。
看起来这是在2016年11月推出的,可能是在发布变更集的时候。
答案 1 :(得分:2)
我假设deploy
只是CreateChangeSet
,CreateStack
和UpdateStack
api方法周围的“语法糖”。
请注意,尽管deploy
is in the CLI是not in the API reference。
我认为,deploy
是首选,无需明确检查变更集。如果不使用deploy
,则可能需要create-change-set
然后决定是创建还是更新堆栈。在这种情况下,部署就像一个堆栈“ upsert”。
我不再懒惰并检查代码,是的-deploy
最终是从CLI使用cloudformation的更好方法。实现是here和here。请注意,截至this issue,deploy
中尚无控制回滚行为的功能。