【问题标题】:How Cloud Formation Works云形成的工作原理
【发布时间】:2015-06-15 02:40:00
【问题描述】:

我看到有很多使用 CloudFormation 的成功案例,我们计划使用它来确保我们的 Prod/Dev 环境相同。我听说这是一个在版本控制中拥有单个文件以部署多个类似环境的好地方。 我有一个疑问,假设我使用 CloudFormer 并创建一个模板,比如我的数据库实例并将其保存为 GIT,然后说在接下来的 10-15 天内我进行了一些更改,例如在实例中添加新卷以存储数据文件,或者删除一些卷等,现在,当我在说我们的开发环境中使用该模板时,它会反映我添加/删除的卷。我的意思是它在幕后是如何工作的。

【问题讨论】:

    标签: amazon-web-services amazon-cloudformation


    【解决方案1】:

    这是使用 CloudFormation 的基本方式:

    1. 创建一个描述您的堆栈的 JSON 模板。您可以手动编写它,也可以编写为您创建 JSON 的代码。

    2. 根据模板创建一个或多个堆栈。

    3. 每当您想更改某些内容时,请编辑您的模板(始终将更改提交到版本控制)并更新堆栈。

    您通常会有多个模板,其中基于一个模板的堆栈使用由基于其他模板的堆栈创建的资源。输出和参数可以很好地协调这一点。

    最重要的是:除了更改堆栈模板和更新堆栈之外,您不应以任何其他方式更改使用 CloudFormation 创建的资源。

    【讨论】:

    • 非常感谢您的解释。实际上,这让我感到困惑,我想在创建模板之后,如果我们进行一些重大更改,比如删除一个数据库服务器或删除一些卷,那么如果我们尝试使用该模板将我们的产品复制到开发环境,那么它不会找到那些会调用 CloudFormation 来回滚的资源。我对此的理解正确吗?
    • 您创建的堆栈将由模板指定,您在模板之外进行的任何手动更改都不会影响新堆栈(尽管您可能会弄乱现有堆栈),并且您不应该首先进行这些更改。
    • 还有一点很重要:CloudFormer 只是帮助您创建一个模板,然后您可以使用它来创建新资源作为堆栈的一部分。模板/堆栈与您指向 CloudFormer 的资源之间没有直接关系。如果您已经在 CloudFormation 之外创建了资源,CloudFormer 是一种帮助您入门的工具,它不是普通 CloudFormation 工作流程的一部分。
    【解决方案2】:

    不,此类更改不会自动反映。

    CloudFormation 模板是对 AWS 资源的声明性描述。当您从模板创建堆栈时,AWS 将预置模板中描述的所有资源。您还可以使用新资源更新堆栈或删除整个堆栈。

    ClodFormer 是一个单独的工具,它将扫描您帐户的资源并创建一个描述它们的模板。

    因此,如果您从同一个模板创建两个堆栈,它们只会在创建后相似,但之后完全不同。但是您可以拥有在堆栈之间共享的资源,例如,您可以拥有一个由两个应用程序堆栈引用的数据库堆栈,如果这对您的环境有意义的话。

    【讨论】:

      猜你喜欢
      • 2021-02-04
      • 2011-06-20
      • 1970-01-01
      • 2019-06-07
      • 1970-01-01
      • 2019-01-24
      • 2021-03-20
      • 2011-10-26
      • 2017-12-02
      相关资源
      最近更新 更多