

# 从 CloudFormation StackSet 中删除堆栈
<a name="stackinstances-delete"></a>

您可以使用 CloudFormation 控制台或 AWS CLI 从堆栈集中删除堆栈。

**Topics**
+ [从 StackSet 中删除堆栈（控制台）](#stackinstances-delete-console)
+ [从 StackSet 中删除堆栈（AWS CLI）](#stackinstances-delete-cli)

**注意**  
删除顶层组织单元（OU）的堆栈后，该 OU 将不再是 StackSet 的目标。

## 从 StackSet 中删除堆栈（控制台）
<a name="stackinstances-delete-console"></a>

**删除堆栈**

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

1. 在屏幕顶部的导航栏中，选择您在其中创建了 StackSet 的 AWS 区域。

1. 从导航窗格中，选择 **StackSets**。在 StackSet 页面上，选择 StackSet。

1. 选择 StackSet 后，从**操作**菜单中选择**从 StackSet 中删除堆栈**。

1. 在**设置部署选项**页面上，首先选择要删除堆栈的账户和区域。

   1. [自行管理权限] 对于**账户**，选择**在账户中部署堆栈**或**在组织单元中部署堆栈**。

      如果选择**在账户中部署堆栈**，请将目标账号粘贴到**目标账号**文本框中，并使用逗号分隔多个账号。

      如果选择**在组织单元中部署堆栈**，请将目标 OU ID 粘贴到**组织编号**文本框中，以将指定组织所属的所有账户作为目标。

   1. [服务管理权限] 对于**组织单位（OU）**，请指定目标 OU ID。
**重要**  
CloudFormation 将从指定目标 OU 及其子组织单元中删除的堆栈。

      对于**账户筛选条件类型**，您可以选择以下选项之一并提供账号，从而细化要删除堆栈的账户。
      + **无**（默认）– 从指定 OU 中的所有账户内删除堆栈。
      + **交集** – 仅从选定 OU 中特定单独账户内删除堆栈。
      + **差集** – 除特定账户外，从选定 OU 中的所有账户内删除堆栈。
      + **并集** – 从指定 OU 以及额外单独账户中删除堆栈。

   1. 对于**指定区域**，请选择要从其中的目标账户删除堆栈的区域。

1. 对于**部署选项**，请执行以下操作：
   + 对于**最大并发账户数**，请指定并发处理的账户数量。
   + 在**容错**中，请指定每个区域允许的账户失败次数上限。达到此次数限制后，该操作将停止，不会继续到其他区域。
   + 对于**保留堆栈**，启用此选项可在从 StackSet 中移除堆栈时保存堆栈及其关联的资源。资源会保持当前状态，但不再是 StackSet 的一部分。
   + 对于**区域并发**，请选择处理区域的方式：**顺序**（一次处理一个区域）或**并行**（并发处理多个区域）。
   + 对于**并发模式**，请选择在操作执行期间的并发行为方式。
     + **严格容错**：操作失败时降低账户并发级别，保持在**容错** \$11 范围内。
     + **软容错** – 即使失败，仍保持您指定的并发级别（**最大并发账户数**的值）。

1. 选择**下一步**。

1. 在**审核**页面上，审核您的选择。要进行更改，请在相关部分选择**编辑**。

1. 准备好从 StackSet 中删除堆栈后，请选择**提交**。

   完成堆栈删除后，您可在 StackSet 详细信息页面的**堆栈实例**选项卡上验证相关堆栈是否已从 StackSet 中删除。

## 从 StackSet 中删除堆栈（AWS CLI）
<a name="stackinstances-delete-cli"></a>

**注意**  
担任委派管理员时，您必须在命令中包含 `--call-as DELEGATED_ADMIN`。

使用 **delete-stack-instances** 命令和 StackSet 的名称。

在这些示例中，我们使用 `--no-retain-stacks`选项，因为我们将不会保留任何堆栈。如果要保留堆栈及其资源，请使用 `--retain-stacks`，而不是 `--no-retain-stacks`。

对于 `--regions`，请指定要从中删除堆栈的 AWS 区域，例如 `us-west-2` 和 `us-east-1`。

使用 `--operation-preferences` 选项设置并发账户处理和其他首选项。这些示例使用基于计数的设置。请注意，`MaxConcurrentCount` 不得大于 `FailureToleranceCount` \$1 1。对于基于百分比的设置，请改用 `FailureTolerancePercentage` 或 `MaxConcurrentPercentage`。

**删除堆栈（自行管理权限）**  
在 `--accounts` 选项中，指定要从中删除堆栈的账户 ID。

```
aws cloudformation delete-stack-instances --stack-set-name my-stackset \
  --accounts account_ID_1 account_ID_2 \
  --regions us-west-2 us-east-1 \
  --no-retain-stacks \
  --operation-preferences MaxConcurrentCount=1,FailureToleranceCount=0
```

**删除堆栈（服务管理权限）**  
在 `--deployment-targets` 中，指定要从中删除堆栈的组织根 ID 或组织单元（OU）ID。

**重要**  
CloudFormation 将从指定目标 OU 及其子组织单元中删除的堆栈。

```
aws cloudformation delete-stack-instances --stack-set-name my-stackset \
  --deployment-targets OrganizationalUnitIds=ou-rcuk-1x5jlwo,ou-rcuk-slr5lh0a \ 
  --regions us-west-2 us-east-1 \
  --no-retain-stacks \
  --operation-preferences MaxConcurrentCount=1,FailureToleranceCount=0
```

有关更多信息，请参阅《AWS CloudFormation API 参考》中的 [DeleteStackInstances](https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_DeleteStackInstances.html)**。

在完成堆栈删除后，您也可以选择运行 **describe-stack-set-operation** 命令来显示堆栈删除操作的状态和结果，验证是否已从 StackSet 中删除堆栈。对于 `--operation-id`，使用由您的 **delete-stack-instances** 命令返回的操作 ID。

```
aws cloudformation describe-stack-set-operation --stack-set-name my-stackset \
  --operation-id ddf16f54-ad62-4d9b-b0ab-3ed8e9example
```