【问题标题】:AWS: How does CloudFormation know a template has been deployed?AWS:CloudFormation 如何知道模板已部署?
【发布时间】:2020-04-25 23:34:47
【问题描述】:

在这个article 中,有一个关于 CloudFormation 的很好的解释。

如果您不了解 CloudFormation,请务必了解 CloudFormation 是 AWS 的基础设施即代码 (IaC) 解决方案。它与 Terraform 属于同一类工具(CloudFormation 和 Terraform 之间的很好比较可以在这里找到)。

借助 CloudFormation,您可以在称为模板的 YAML 或 JSON 文件中以声明方式指定您的云应用程序所需的 AWS 基础设施,然后部署此模板。在部署期间,AWS 会自动预置您在模板中指定的所有资源。

如果您之前已经部署并且刚刚对模板进行了更改,那么 AWS 会计算并应用一个更改集,以便您的基础设施状态与您的规范相匹配(就像 Kubernetes 一样)。

想象以下场景:

  1. 创建一个新项目并为此项目设置 CloudFormation 模板。
  2. 已成功部署此模板。
  3. 然后,更改代码。
  4. 再次部署。

就 step4 而言,CloudFormation 是如何知道这个堆栈之前已经创建的,然后更新它?

模板中是否有唯一的 UUID 来标识与该模板相关的所有资源?

【问题讨论】:

标签: amazon-web-services amazon-cloudformation


【解决方案1】:

标识符是您在使用create-stack 命令部署模板时指定的堆栈名称,因为它在您创建堆栈的区域中应该是唯一的。

【讨论】:

  • 我还发现了一个与我的问题相关的 Stack Overflow 问题:stackoverflow.com/questions/51828313/…
  • 那么模板是用来声明你想要多少资源/权限的?堆栈名称是基于模板的实例。我说的对吗?
  • 从OOP来看,一个模板就是Class的定义,一个栈就是这个Class的一个实例。对吗?
  • @RyanLv 正确
【解决方案2】:

嗯,你实际上是使用新模板/新参数值主动更新某个堆栈。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-03
    • 2016-11-17
    • 1970-01-01
    • 1970-01-01
    • 2014-10-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多