防止堆栈被删除 - Amazon CloudFormation
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

防止堆栈被删除

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

在堆栈上启用或禁用终止保护同时也将对属于该堆栈的任何嵌套堆栈进行设置。不能直接在嵌套堆栈上启用或禁用终止保护。如果用户尝试直接删除一个属于已启用终止保护的堆栈的嵌套堆栈,则操作会失败,并且嵌套堆栈将保持不变。

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

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

在创建堆栈时启用终止保护
在现有堆栈上启用或禁用终止保护
  1. 登录到 Amazon Web Services Management Console 并打开 CloudFormation 控制台,网址为:https://console.aws.amazon.com/cloudformation/

  2. 选择想要设置的堆栈。

    注意

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

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

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

  4. 选择 Enable (启用)Disable (禁用),然后选择 Save (保存)

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

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

  1. 登录到 Amazon Web Services Management Console 并打开 CloudFormation 控制台,网址为:https://console.aws.amazon.com/cloudformation/

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

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

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

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

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

  5. 选择 Enable (启用)Disable (禁用),然后选择 Save (保存)

使用命令行启用或禁用终止保护

控制谁可以在堆栈上更改终止保护

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

有关在 Amazon CloudFormation 中指定权限的更多信息,请参阅使用 Amazon Identity and Access Management 控制访问权限

例 授予更改堆栈终止保护权限的示例策略
{ "Version":"2012-10-17", "Statement":[{ "Effect":"Allow", "Action":[ "cloudformation:UpdateTerminationProtection" ], "Resource":"*" }] }