

# CloudFormation 堆栈的删除保护
<a name="using-cfn-protect-stacks"></a>

您可以通过在堆栈上启用终止保护来防止堆栈被意外删除。如果用户尝试删除已启用终止保护的堆栈，则删除操作会失败，并且堆栈及其状态将保持不变。可在创建堆栈时对其启用终止保护。默认情况下，堆栈上的终止保护是禁用的。您可以为状态为 `DELETE_IN_PROGRESS` 或 `DELETE_COMPLETE` 之外任何状态的堆栈设置终止保护。

如果在堆栈上启用或禁用终止保护，则也会将相同的选择传递给属于该堆栈的任何嵌套堆栈。不能直接在嵌套堆栈上启用或禁用终止保护。如果用户尝试直接删除一个属于已启用终止保护的堆栈的嵌套堆栈，则操作会失败，并且嵌套堆栈将保持不变。

但是，如果用户执行会删除嵌套堆栈的堆栈更新，则 Amazon CloudFormation 会相应地删除嵌套堆栈。

终止保护不同于禁用回滚。终止保护仅适用于尝试删除堆栈的情况，而禁用回滚适用于创建堆栈失败时的自动回滚。

**在创建堆栈时启用终止保护**  
在 **Create stack**（创建堆栈）向导中的 **Specify stack options**（指定堆栈选项）页面上，在 **Advanced options**（高级选项）下，展开 **Termination Protection**（终止保护）部分，然后选择 **Enable**（启用）。有关更多信息，请参阅 [配置堆栈选项](cfn-console-create-stack.md#configure-stack-options)。

**在现有堆栈上启用或禁用终止保护**

1. 登录到 Amazon Web Services 管理控制台 并打开 Amazon CloudFormation 控制台 [https://console.aws.amazon.com/cloudformation](https://console.amazonaws.cn/cloudformation/)。

1. 在屏幕顶部的导航栏中，选择您的 Amazon Web Services 区域。

1. 选择想要设置的堆栈。
**注意**  
如果堆栈名称旁边显示 **NESTED**，则该堆栈为嵌套堆栈。您只能在该嵌套堆栈所属的根堆栈上更改终止保护。

1. 在堆栈详细信息窗格中，选择 **Stack actions (堆栈选项)**，然后选择 **Edit termination protection (编辑终止保护)**。

   CloudFormation 会显示**编辑终止保护**对话框。

1. 选择 **Enable (启用)** 或 **Disable (禁用)**，然后选择 **Save (保存)**。

**在嵌套堆栈上启用或禁用终止保护**

如果堆栈名称旁边显示 **NESTED**，则该堆栈为嵌套堆栈。您只能在该嵌套堆栈所属的根堆栈上更改终止保护。在根堆栈上更改终止保护：

1. 登录到 Amazon Web Services 管理控制台 并打开 Amazon CloudFormation 控制台 [https://console.aws.amazon.com/cloudformation](https://console.amazonaws.cn/cloudformation/)。

1. 在屏幕顶部的导航栏中，选择您的 Amazon Web Services 区域。

1. 选择想要设置的嵌套堆栈。

1. 在 **Stack info (堆栈信息)** 窗格中，在**概述**部分中，选择作为**根堆栈**列出的堆栈名称。

   CloudFormation 会显示根堆栈的堆栈详细信息。

1. 依次选择 **Stack actions (堆栈选项)**、**Edit termination protection (编辑终止保护)**。

   CloudFormation 会显示**编辑终止保护**对话框。

1. 选择 **Enable (启用)** 或 **Disable (禁用)**，然后选择 **Save (保存)**。

**使用命令行启用或禁用终止保护**  
使用 [https://docs.amazonaws.cn/cli/latest/reference/cloudformation/update-termination-protection.html](https://docs.amazonaws.cn/cli/latest/reference/cloudformation/update-termination-protection.html) 命令。

## 控制谁可以在堆栈上更改终止保护
<a name="protect-stacks-perms"></a>

要在堆栈上启用或禁用终止保护，用户需要拥有进行 `cloudformation:UpdateTerminationProtection` 操作的权限。例如，以下策略允许用户在堆栈上启用或禁用终止保护。

有关在 Amazon CloudFormation 中指定权限的更多信息，请参阅[使用 Amazon Identity and Access Management 控制 CloudFormation 访问权限](control-access-with-iam.md)。

**Example 授予更改堆栈终止保护权限的示例策略**    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement":[{
        "Effect":"Allow",
        "Action":[
            "cloudformation:UpdateTerminationProtection"
        ],
        "Resource":"*"
    }]
}
```