

# 使用更改集更新 CloudFormation 堆栈
<a name="using-cfn-updating-stacks-changesets"></a>

当您需要更新堆栈时，在实施之前了解您的更改会如何影响正在运行的资源可以帮助您充满自信地更新堆栈。借助更改集功能，您可以预览对堆栈提议的更改可能会对正在运行的资源产生的影响，包括对资源属性和特性的影响。无论更改是否会删除或替换任何关键资源，只有在您决定执行更改集时，CloudFormation 才会对堆栈进行更改，这让您可以决定是要继续执行提议的更改，还是通过创建其他更改集来探索其他更改。您可以使用 CloudFormation 控制台、Amazon CLI 或 CloudFormation API 来创建和管理更改集。

**Topics**
+ [创建 CloudFormation 堆栈的更改集](using-cfn-updating-stacks-changesets-create.md)
+ [查看 CloudFormation 堆栈的更改集](using-cfn-updating-stacks-changesets-view.md)
+ [使用偏差感知更改集](drift-aware-change-sets.md)
+ [执行 CloudFormation 堆栈的更改集](using-cfn-updating-stacks-changesets-execute.md)
+ [删除 CloudFormation 堆栈的更改集](using-cfn-updating-stacks-changesets-delete.md)
+ [CloudFormation 堆栈的更改集示例](using-cfn-updating-stacks-changesets-samples.md)
+ [嵌套堆栈的更改集](change-sets-for-nested-stacks.md)

**重要**  
更改集不指示 CloudFormation 是否会成功更新堆栈。例如，更改集不会检查是否将超出账户配额、是否将更新不支持更新的资源或者您是否权限不足而无法修改资源，所有这些都将导致堆栈更新失败。如果更新失败，CloudFormation 将尝试将您的资源回滚到原始状态。

**更改集概述**  
下表总结了您可以如何使用更改集来更新堆栈：

![\[该图展示了使用 CloudFormation 更改集更新堆栈的四个步骤。\]](http://docs.amazonaws.cn/AWSCloudFormation/latest/UserGuide/images/update-stack-changesets-diagram.png)


1. 通过为您要更新的堆栈提交更改来创建更改集。您可以提交修改后的堆栈模板或者修改后的输入参数值。CloudFormation 将您的堆栈与所提交更改进行对比，生成更改集；此时不会更改您的堆栈。

1. 查看更改集以了解将更改哪些堆栈设置和资源。例如，您可以查看 CloudFormation 将添加、修改或删除哪些资源。此外，您还可以查看 CloudFormation 将要修改的资源属性和特性（例如标签）的更改前后比较。

1. 可选：如果您希望在决定所要进行的更改之前考虑其他更改，请创建其他的更改集。创建多个更改集有助您了解和评估不同的更改将对资源和属性造成的影响。您可以根据需要创建任意数量的更改集。

1. 执行包含您希望应用到堆栈的更改的更改集。CloudFormation 使用这些更改更新您的堆栈。
**注意**  
在您执行更改之后，CloudFormation 将删除与堆栈关联的所有更改集，因为它们不再适用于更新后的堆栈。

您还可以删除更改集以防止执行不应该应用的更改集。