

# 为 AWS Organizations 中的堆栈集启用或禁用自动部署
<a name="stacksets-orgs-manage-auto-deployment"></a>

将新的 AWS Organizations 账户添加到目标组织或组织单元（OU）后，CloudFormation 会自动将额外的堆栈部署到这些账户。您可以启用自动部署，并选择当账户从目标 OU 移出时，是删除还是保留堆栈及其相关资源。对于使用服务托管权限的堆栈集，这些设置可以随时修改。

## 自动部署的工作原理
<a name="stacksets-orgs-auto-deployment-example"></a>

启用自动部署后，当账户添加到目标组织或 OU、从目标组织或 OU 移除或在目标 OU 之间移动时，都会触发自动部署。

例如，考虑以 `us-east-1` 区域中的 `OU1` 为目标的 `StackSet1` 和以 `us-east-1` 区域中的 `OU2` 为目标的 `StackSet2`。`OU1` 包含 `AccountA`。

如果在启用自动部署的情况下将 `AccountA` 从 `OU1` 移至 `OU2`，CloudFormation 会自动运行删除操作，从 `AccountA` 中移除 `StackSet1` 堆栈，并在队列中排入一个将 `StackSet2` 堆栈添加到 `AccountA` 的创建操作。

## 注意事项
<a name="stacksets-orgs-auto-deployment-considerations"></a>

以下是使用自动部署时的注意事项：
+ 自动部署功能在 StackSet 级别启用。您无法为 OU、账户或区域选择性地调整自动部署。
+ 覆盖的参数值仅适用于当前已在目标 OU 及其子 OU 中的账户。将来添加到目标 OU 及其子 OU 的账户将使用 StackSet 默认值，而不使用覆盖的值。
+ 自动部署不考虑账户级别的目标筛选器。如果您的目标是特定账户，而且启用了自动部署，StackSet 将继续部署到已部署组织中任何新添加的账户。要防止部署到新添加的账户，请禁用自动部署。
+ 依赖项管理：每个 StackSet 最多定义 10 个依赖项，每个账户最多定义 100 个依赖项。例如，如果您有五个 StackSet，且每个都有五个依赖项，则您有 25 个依赖项计入 100 个依赖项上限。您可以通过[服务配额控制台](https://console.aws.amazon.com/servicequotas/home)请求增加限额。删除 StackSet 或停用 Organizations 时，依赖项将被移除。
+ 建议在使用自动部署时启用托管执行。托管执行将允许在多个目标账户中进行的自动部署操作在 StackSet 中同时执行，从而提高处理速度，对于规模较大的 Organizations 尤其如此。

## 启用或禁用自动部署（控制台）
<a name="stacksets-orgs-manage-auto-deployment-console"></a>

**启用或禁用自动部署**

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

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

1. 从导航窗格中，选择 **StackSets**。

1. 在 **StackSet** 页面上，选择要更新的 StackSet 名称旁边的选项。

1. 从右上角的**操作**菜单中选择**编辑自动部署**。

1. 在打开的对话框中，执行以下操作：

   1. 对于**自动部署**，选择**激活**或**停用**。

   1. 对于**账户移除行为**，请选择**删除堆栈**或**保留堆栈**。保留的资源会保持当前状态，但不再是 StackSet 的一部分。

   1. 对于 StackSet **依赖项**，添加依赖的 StackSet ARN，最多保持在 10 个依赖项内。

1. 选择**保存**。

## 启用或禁用自动部署（AWS CLI）
<a name="stacksets-orgs-manage-auto-deployment-cli"></a>

**启用或禁用自动部署**

1. 使用带 `--auto-deployment` 选项的 [https://docs.aws.amazon.com/cli/latest/reference/cloudformation/update-stack-set.html](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/update-stack-set.html) 命令。

   以下命令可启用自动部署。

   ```
   aws cloudformation update-stack-set --stack-set-name my-stackset \
     --use-previous-template --auto-deployment Enabled=true,RetainStacksOnAccountRemoval=true,DependsOn=ARN1,ARN2
   ```

   或者，要禁用自动部署，可指定 `Enabled=false` 作为 `--auto-deployment` 选项的值，如下例所示。

   ```
   aws cloudformation update-stack-set --stack-set-name my-stackset \
     --use-previous-template --auto-deployment Enabled=false
   ```

1. 使用 **update-stack-set** 输出中返回的操作 ID，运行 [https://docs.aws.amazon.com/cli/latest/reference/cloudformation/describe-stack-set-operation.html](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/describe-stack-set-operation.html) 来验证 StackSet 是否已成功更新。

   ```
   aws cloudformation describe-stack-set-operation --operation-id operation_ID
   ```