修改堆栈模板 - AWS CloudFormation

修改堆栈模板

如果您要修改在堆栈模板中声明的资源和属性,则必须修改堆栈的模板。要确保仅更新计划更新的资源,请将现有堆栈的模板用作起点,然后对该模板进行更新。如果您要在源控制系统中管理模板,请使用该模板的副本作为起点。否则,您可以从 AWS CloudFormation 获取堆栈模板的副本。

如果您希望只修改堆栈的参数或设置 (如堆栈的 Amazon SNS 主题),则可以重新使用现有的堆栈模板。您无需获取堆栈模板的副本或修改堆栈模板。

注意

如果您的模板包含不受支持的更改,AWS CloudFormation 将返回一条更改不予允许的消息。然而,该消息可能是异步出现的,因为在默认情况下,AWS CloudFormation 创建和更新资源的顺序是不确定的。

更新堆栈的模板 (控制台)

  1. AWS CloudFormation 控制台的 Stacks(堆栈)页面上,单击要更新的堆栈的名称。

  2. 在选定堆栈的详细信息窗格中,选择 Template (模板) 窗格,然后单击 View in Designer (在 Designer 中查看)

    AWS CloudFormation 在 AWS CloudFormation Designer 中打开此堆栈的模板副本。

  3. 修改模板。

    您可以使用 AWS CloudFormation Designer 拖放界面或集成的 JSON 和 YAML 编辑器修改模板。有关使用 AWS CloudFormation Designer 的更多信息,请参阅 什么是 AWS CloudFormation Designer?

    仅修改您希望更新的资源。对于不更新的资源和属性,使用与当前堆栈配置相同的值。您可以通过完成以下任何操作来修改模板:

    • 添加新资源,或删除现有资源。

      对于大多数资源,更改资源的逻辑名称相当于删除该资源并将其替换为新资源。与重命名的资源关联的任何其他资源也需要更新,并且可能会导致它们被替换。其他资源需要您更新属性(不仅仅是逻辑名称)才能启动更新。

    • 添加、修改或删除现有资源的属性。

      有关更新特定资源属性的影响的信息,请参阅 AWS 资源类型参考。对于每种属性,更新将产生以下一种影响:

    • 添加、修改或删除资源的属性 (MetadataDependsOnCreationPolicyUpdatePolicyDeletionPolicy)。

      重要

      您无法更新 CreationPolicyUpdatePolicy 属性本身。您只能在包含添加、修改或删除资源的更改时更新它们。例如,您可以添加或修改资源的元数据属性。

    • 添加、修改或删除参数声明。但是,您无法添加、修改或删除不支持更新的资源使用的参数。

    • 添加、修改或删除映射声明。

      重要

      如果堆栈未使用映射中的值,则无法更新映射本身。您需要包含添加、修改或删除资源的更改。例如,您可以添加或修改资源的元数据属性。如果您更新了您的堆栈正在使用的映射值,则无需进行任何其他更改就能启动更新。

    • 添加、修改或删除条件声明。

      重要

      您不能更新条件本身。您只能在包含添加、修改或删除资源的更改时更新条件。例如,您可以添加或修改资源的元数据属性。

    • 添加、修改或删除输出值声明。

    一些资源或属性可能在属性值或这些值的更改方面有一些限制条件。例如,对 AWS::RDS::DBInstance 资源的 AllocatedStorage 属性的更改必须大于当前设置。如果为更新指定的值不满足这些约束,该资源的更新将失败。有关 AllocatedStorage 更改的特定约束,请参阅 ModifyDBInstance

    资源更新可能对影响其他资源的属性。如果您使用 Ref 函数Fn::GetAtt 函数来将更新资源的属性指定为模板中其他资源属性值的一部分,AWS CloudFormation 还将更新包含对已更改属性的引用的资源。举例来说,如果更新了 AWS::RDS::DBInstance 资源的 MasterUsername 属性,并且拥有一个具有 UserData 属性(包含使用 Ref 函数对数据库实例名称的引用)的 AWS::AutoScaling::LaunchConfiguration 资源,则 AWS CloudFormation 将使用新名称重新创建数据库实例,同时更新 LaunchConfiguration 资源。

  4. 要检查模板中是否存在语法错误,请从 AWS CloudFormation Designer 工具栏中选择 Validate template(验证模板)( )。

    查看并修复 Messages 窗格中的所有错误,然后再次验证模板。如果未看到任何错误,则说明您的模板语法上是有效的。

  5. 在 AWS CloudFormation Designer 工具栏中,选择 File(文件)菜单( ),然后选择 Save(保存),以将模板保存到 S3 桶或本地。

  6. 使用已修改的模板直接更新堆栈使用更改集更新堆栈

获取和更新堆栈模板 (CLI)

  1. 可以使用命令 aws cloudformation get-template 来获取要更新的堆栈的模板。

  2. 将模板复制并粘贴到文本文件中,进行修改,然后保存它。 复制模板。该命令将模板括在引号中,但是不得复制模板两端的引号。模板本身以左括号开始,以右括号结束。指定对本文件中堆栈资源的更改。

  3. 使用已修改的模板直接更新堆栈使用更改集更新堆栈