我们有四个 AWS 账户用于定义不同的环境:dev、sqe、stg、prd。我们现在才使用 CF,我想将现有资源导入到堆栈中。当我们推出这个时,每个环境都会获得新的堆栈,我想知道是否有更简单的方法来在每个环境中导入资源。而不是最初通过控制台导入资源,同时添加堆栈(如果我们可以通过部署系统进行部署,那就太好了。)
我所希望的是我可以在堆栈定义本身中指定的内容(例如,“这里有一个已经存在的存储桶,取得所有权”),但我没有找到任何东西。目前,最简单的方法似乎是在每个环境中创建一个空堆栈,导入资源,然后正常部署。
此外,当/如果更新失败并且堆栈陷入 ROLLBACK_COMPLETE 状态时会发生什么?删除堆栈后是否需要再次执行此操作?
最佳答案
您所描述的内容听起来与持续集成/持续部署(CICD)管道之后的内容完全相同。您最好设计 cloudformation 模板,然后通过 Code Pipeline 将它们部署到每个环境,而不是尝试将现有资源导入您的帐户。这也将在帐户之间提供清晰的分离,而不是将 stg 资源导入到 prd。
serverless-cicd-for-enterprise 是一个很棒的示例和快速入门。这对您来说应该是一个很好的起点。
您不能陷入“回滚完成”状态,因为这是失败的更改集执行的最后一个操作。这意味着它尝试更新,但无法更新,并且已恢复到上次成功的部署。如果这是第一次部署(没有成功的部署),您将需要删除堆栈并重试。但是,如果您已成功部署,则可以运行更新堆栈。
关于amazon-web-services - 使用多个帐户导入现有资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61216212/