

# 将堆栈添加到 CloudFormation 堆栈集
<a name="stackinstances-create"></a>

创建 StackSet 时，可以为 StackSet 创建堆栈。利用 CloudFormation，您还能在创建 StackSet 后的任何时间为其他账户和区域添加更多堆栈。您可以使用 CloudFormation 控制台或 AWS CLI 添加堆栈。

**Topics**
+ [将堆栈添加到 StackSet（控制台）](#stackinstances-create-console)
+ [将堆栈添加到 StackSet（AWS CLI）](#stackinstances-create-cli)

## 将堆栈添加到 StackSet（控制台）
<a name="stackinstances-create-console"></a>

**将堆栈添加到 StackSet**

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. 对于**将堆栈添加到 StackSet**，选择**部署新堆栈**。

   1. 接下来，根据 StackSet 的权限配置执行以下操作：
      + [自行管理权限] 对于**账户**、**部署位置**，选择**在账户中部署堆栈**。在文本框中粘贴您的目标账号，并使用逗号分隔多个号码。
      + [服务管理权限] 对于**部署目标**，请执行以下操作之一：
        + 选择 **Deploy to organization (部署到组织)** 可部署到您组织中的所有账户。
        + 选择 **Deploy to organizational units (OUs) (部署到组织单位 (OU))** 可部署到特定 OU 中的所有账户。选择 **Add another OU (添加其他 OU)**，然后将目标 OU ID 粘贴到文本框中。对每个新目标 OU 重复执行此操作。CloudFormation 还可以所选目标的任何子 OU 为目标。
**注意**  
如果您添加的 OU 已是 StackSet 的目标，同时该 OU 中有任何账户尚未具有 StackSet 中的堆栈（例如，在创建 StackSet 后添加到 OU 并且已禁用自动部署的账户），则 CloudFormation 会在该账户中创建新的堆栈。

   1. 对于**指定区域**，指定要部署到在上一步中所指定目标账户中的哪个 AWS 区域。默认情况下，CloudFormation 将在第一个区域内的指定账户中部署堆栈，然后移到下一个区域，依此类推，前提是区域的部署失败不超过指定的容错能力。

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

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

1. 在 **Specify Overrides (指定覆盖)** 页面上，将属性值保留为指定值。您不会覆盖您要创建的堆栈的任何属性值。选择**下一步**。

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

1. 如果准备继续，则请选择**提交**。

   CloudFormation 会开始创建堆栈。选择**提交**后会打开 StackSet 详细信息页面，可以在其中查看 StackSet 中的堆栈创建进度和状态。完成后，新堆栈应该会在**堆栈实例**选项卡上列出。

## 将堆栈添加到 StackSet（AWS CLI）
<a name="stackinstances-create-cli"></a>

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

**将堆栈添加到具有自行管理权限的 StackSet**  
使用 **create-stack-instances** CLI 命令。在 `--accounts` 选项中，请提供您要为其创建堆栈的账户 ID。

```
aws cloudformation create-stack-instances --stack-set-name my-stackset \
  --accounts account_id --regions eu-west-1 us-west-2
```

**将堆栈添加到具有服务托管权限的 StackSet**  
使用 **create-stack-instances** CLI 命令。在 `--deployment-targets` 选项中，请提供要为其创建堆栈的组织（根）ID 或 OU ID。有关针对特定账户的命令示例，请参阅[创建具有服务管理权限的 StackSet（AWS CLI）](stacksets-orgs-associate-stackset-with-org.md#stacksets-orgs-associate-stackset-with-org-cli)。

```
aws cloudformation create-stack-instances --stack-set-name my-stackset \
  --deployment-targets OrganizationalUnitIds=ou-rcuk-r1qi0wl7 --regions eu-west-1 us-west-2
```

**注意**  
如果您添加的 OU 已是 StackSet 的目标，同时该 OU 中有任何账户尚未具有 StackSet 中的堆栈（例如，在创建 StackSet 后添加到 OU 并且已禁用自动部署的账户），则 CloudFormation 会在该账户中创建新的堆栈。