

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 跨账户和区域启用 Data Lifecycle Manager 默认策略
<a name="dlm-stacksets"></a>

使用 Amazon CloudFormation StackSets，您只需一次操作即可在多个账户和 Amazon 地区启用亚马逊数据生命周期管理器默认策略。

您可以使用堆栈集通过以下方式之一启用默认策略：
+ **在整个 Amazon 组织**中-确保在整个 Amazon 组织或组织中的特定组织单位中统一启用和配置默认策略。这是使用*服务管理权限*完成的。 Amazon CloudFormation StackSets 代表您创建所需的 IAM 角色。
+ **跨特定 Amazon 账户**-确保在特定目标账户中一致启用和配置默认策略。这需要*自行管理权限*。您可以创建在堆栈集管理员账户和目标账户之间建立信任关系所需的 IAM 角色。

有关更多信息，请参阅《*Amazon CloudFormation 用户指南*》中的[堆栈集的权限模型](https://docs.amazonaws.cn/AWSCloudFormation/latest/UserGuide/what-is-cfnstacksets.html#stacksets-concepts-stackset-permission-models)。

使用以下步骤在整个 Amazon 组织、特定或特定目标账户中启用 Amazon Data Lifecy OUs cle Manager 的默认策略。

**先决条件**

根据启用默认策略的方式，执行以下操作之一：
+ （跨 Amazon 组织）您必须[启用组织中的所有功能](https://docs.amazonaws.cn/organizations/latest/userguide/orgs_manage_org_support-all-features.html)并使用[激活可信访问权限 Amazon Organizations](https://docs.amazonaws.cn/AWSCloudFormation/latest/UserGuide/stacksets-orgs-activate-trusted-access.html)。您还必须使用组织的管理账户或[委派管理员账户](https://docs.amazonaws.cn/AWSCloudFormation/latest/UserGuide/stacksets-orgs-delegated-admin.html)。
+ （跨特定目标账户）您必须通过创建在堆栈集管理员账户和目标账户之间建立信任关系所需的角色来授予[自行管理权限](https://docs.amazonaws.cn/AWSCloudFormation/latest/UserGuide/stacksets-prereqs-self-managed.html)。

------
#### [ Console ]

**跨 Amazon 组织或跨特定目标账户启用默认策略**

1. 在 [https://console.aws.amazon.com/cloudformat](https://console.amazonaws.cn/cloudformation/) ion 上打开 Amazon CloudFormation 控制台。

1. 在导航窗格中，选择 **StackSets**，然后选择**创建 StackSet**。

1. 对于**权限**，根据启用默认策略的方式，执行以下操作之一：
   + （在整个 Amazon 组织中）选择**服务管理权限**。
   + （跨特定目标账户）选择**自助服务权限**。然后，对于 **IAM 管理员角色 ARN**，选择您为管理员账户创建的 IAM 服务角色，对于 **IAM 执行角色名称**，输入您在目标账户中创建的 IAM 服务角色的名称。

1. 对于**准备模板**，选择**使用示例模板**。

1. 对于**示例模板**，执行以下操作之一：
   + （EBS 快照的默认策略）选择**为 EBS 快照创建 Amazon Data Lifecycle Manager 默认策略**。
   + （EBS 支持的默认策略 AMIs）选择 EBS 支持的**创建 Amazon Data Lifecycle Manager 的默认策略。 AMIs**

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

1. 在**StackSet 名称**和**StackSet 描述**中，输入描述性名称和简短描述。

1. 在**参数**部分，根据需要配置默认策略设置。
**注意**  
对于关键工作负载，我们建议 **CreateInterval = 1 天**和 **RetainInterval = 7 天**。

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

1. （可选）在 “**标签**” 中，指定标签以帮助您识别 StackSet 和堆栈资源。

1. 对于**托管执行**，选择**活动**。

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

1. 对于 **Add stacks to stack set**（将堆栈添加到堆栈集），选择 **Deploy new stacks**（部署新堆栈）。

1. 根据启用默认策略的方式，执行以下操作之一：
   + （跨 Amazon 组织）对于**部署目标**，请选择以下选项之一：
     + 要在整个 Amazon 组织中部署，请选择**部署到组织**。
     + 要部署到特定组织单位（OU），请选择**部署到组织单位**，然后在 **OU ID** 中输入 OU ID。要添加其他 OUOUs，请选择**添加另一个 OU**。
   + （跨特定目标账户）对于**账户**，执行以下操作之一：
     + 要部署到特定的目标账户，请选择**在账户中部署堆栈**，然后在**账户号**中 IDs 输入目标账户的。
     + 要部署到特定 OU 中的所有账户，选择**将堆栈部署到组织单位中的所有账户**，然后对于**组织编号**，输入目标 OU 的 ID。

1. 对于**自动部署**，选择**已激活**。

1. 对于**账户删除行为**，选择**保留堆栈**。

1. 对于**指定区域**，选择要在其中启用默认策略的特定区域，或者选择**添加所有区域**以在所有区域中启用默认策略。

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

1. 查看堆栈集设置，选择**我确认 Amazon CloudFormation 可能会创建 IAM 资源**，然后选择**提交**。

------
#### [ Amazon CLI ]

**在整个 Amazon 组织中启用默认策略**

1. 创建堆栈集。使用 [ create-stack-set](https://docs.amazonaws.cn/cli/latest/reference/cloudformation/create-stack-set.html) 命令。

   对于 `--permission-model`，请指定 `SERVICE_MANAGED`。

   对于`--template-url`，请指定以下模板之一 URLs：
   + （EBS AMIs 支持的默认策略）`https://s3.amazonaws.com/cloudformation-stackset-sample-templates-us-east-1/DataLifecycleManagerAMIDefaultPolicy.yaml`
   + （EBS 快照的默认策略）`https://s3.amazonaws.com/cloudformation-stackset-sample-templates-us-east-1/DataLifecycleManagerEBSSnapshotDefaultPolicy.yaml`

   对于 `--parameters`，指定默认策略的设置。有关支持的参数、参数描述和有效值，请使用 URL 下载模板，然后使用文本编辑器查看模板。

   对于 `--auto-deployment`，请指定 `Enabled=true, RetainStacksOnAccountRemoval=true`。

   ```
   $ aws cloudformation create-stack-set \
   --stack-set-name stackset_name \
   --permission-model SERVICE_MANAGED \
   --template-url template_url \
   --parameters "ParameterKey=param_name_1,ParameterValue=param_value_1" "ParameterKey=param_name_2,ParameterValue=param_value_2" \
   --auto-deployment "Enabled=true, RetainStacksOnAccountRemoval=true"
   ```

1. 部署堆栈集。使用 [ create-stack-instances](https://docs.amazonaws.cn/cli/latest/reference/cloudformation/create-stack-instances.html) 命令。

   对于 `--stack-set-name`，指定您在上一步中创建的堆栈集的名称。

   对于`--deployment-targets OrganizationalUnitIds`，请指定要部署到整个组织的根 OU 或要部署 IDs 到组织 OUs 中的特定组织的 OU 的 ID。

   对于`--regions`，请指定要在其中启用默认策略的 Amazon 区域。

   ```
   $ aws cloudformation create-stack-instances \
   --stack-set-name stackset_name \
   --deployment-targets OrganizationalUnitIds='["root_ou_id"]' | '["ou_id_1", "ou_id_2]' \
   --regions '["region_1", "region_2"]'
   ```

**在特定目标账户中启用默认策略**

1. 创建堆栈集。使用 [ create-stack-set](https://docs.amazonaws.cn/cli/latest/reference/cloudformation/create-stack-set.html) 命令。

   对于`--template-url`，请指定以下模板之一 URLs：
   + （EBS AMIs 支持的默认策略）`https://s3.amazonaws.com/cloudformation-stackset-sample-templates-us-east-1/DataLifecycleManagerAMIDefaultPolicy.yaml`
   + （EBS 快照的默认策略）`https://s3.amazonaws.com/cloudformation-stackset-sample-templates-us-east-1/DataLifecycleManagerEBSSnapshotDefaultPolicy.yaml`

   对于 `--administration-role-arn`，指定您之前为堆栈集管理员创建的 IAM 服务角色的 ARN。

   对于 `--execution-role-name`，指定您在目标账户中创建的 IAM 服务角色的名称。

   对于 `--parameters`，指定默认策略的设置。有关支持的参数、参数描述和有效值，请使用 URL 下载模板，然后使用文本编辑器查看模板。

   对于 `--auto-deployment`，请指定 `Enabled=true, RetainStacksOnAccountRemoval=true`。

   ```
   $ aws cloudformation create-stack-set \
   --stack-set-name stackset_name \
   --template-url template_url \
   --parameters "ParameterKey=param_name_1,ParameterValue=param_value_1" "ParameterKey=param_name_2,ParameterValue=param_value_2" \
   --administration-role-arn administrator_role_arn \
   --execution-role-name target_account_role \									
   --auto-deployment "Enabled=true, RetainStacksOnAccountRemoval=true"
   ```

1. 部署堆栈集。使用 [ create-stack-instances](https://docs.amazonaws.cn/cli/latest/reference/cloudformation/create-stack-instances.html) 命令。

   对于 `--stack-set-name`，指定您在上一步中创建的堆栈集的名称。

   对于`--accounts`，请 IDs 指定目标 Amazon 帐户的。

   对于`--regions`，请指定要在其中启用默认策略的 Amazon 区域。

   ```
   $ aws cloudformation create-stack-instances \
   --stack-set-name stackset_name \
   --accounts '["account_ID_1","account_ID_2"]' \
   --regions '["region_1", "region_2"]'
   ```

------