

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

# 通过 Service Catalog API 在 AWS Control Tower 中自动预置账户
<a name="automated-provisioning-walkthrough"></a>

AWS Control Tower 与其他几项 AWS 服务集成，例如 AWS Service Catalog。您可以使用 API 在 AWS Control Tower 中创建和配置您的成员账户，或者注册现有成员账户。

**注意**  
如果您在 landing zone 设置中禁用了 IAM Identity Center `SSOUserEmail``SSOUserFirstName`，则在账户配置期间不会使用 SSO 用户参数（、和`SSOUserLastName`）。如果需要，您可以为这些必需的参数提供占位符值，然后按照中的[在 Service Catalog 中更新预置产品](update-provisioned-product.md)说明进行修改。

该视频演示如何通过调用 AWS Service Catalog API，以自动批处理方式预置账户。要进行配置，您需要从 AWS 命令行界面 (CLI) 调用 [https://docs.aws.amazon.com//servicecatalog/latest/dg/API_ProvisionProduct.html](https://docs.aws.amazon.com//servicecatalog/latest/dg/API_ProvisionProduct.html)API，然后指定一个 JSON 文件，其中包含您要设置的每个账户的参数。该视频演示如何安装和使用 [AWS Cloud9](https://docs.aws.amazon.com//cloud9/latest/user-guide/welcome.html) 开发环境来执行此项工作。如果你使用 Clouds AWS hell 而不是 Cloud AWS 9，CLI 命令将是一样的。

**注意**  
您还可以通过为每个账户调用的 [https://docs.aws.amazon.com//servicecatalog/latest/dg/API_UpdateProvisionedProduct.html](https://docs.aws.amazon.com//servicecatalog/latest/dg/API_UpdateProvisionedProduct.html)API 来调整这种方法 AWS Service Catalog 以实现账户自动更新。您可以编写一个脚本来逐个更新账户。

作为一种完全不同的自动化方法，如果您熟悉 Terraform，则可以使用 [AWS Control Tower Account Factory for Terraform（AFT）预置账户](taf-account-provisioning.md)。

**自动化管理角色示例**

以下是一个示例模板，可帮助配置您的管理账户中的自动化管理角色。您需要在管理账户中配置这个角色，这样它就可以在目标账户中使用管理员访问权限执行自动化。

```
AWSTemplateFormatVersion: 2010-09-09
Description: Configure the SampleAutoAdminRole

Resources:
  AdministrationRole:
    Type: AWS::IAM::Role
    Properties:
      RoleName: SampleAutoAdminRole
      AssumeRolePolicyDocument:
        Version: 2012-10-17		 	 	 
        Statement:
          - Effect: Allow
            Principal:
              Service: cloudformation.amazonaws.com
            Action:
              - sts:AssumeRole
      Path: /
      Policies:
        - PolicyName: AssumeSampleAutoAdminRole
          PolicyDocument:
            Version: 2012-10-17		 	 	 
            Statement:
              - Effect: Allow
                Action:
                  - sts:AssumeRole
                Resource:
                  - "arn:aws:iam::*:role/SampleAutomationExecutionRole"
```

**自动化执行角色示例**

以下是一个示例模板，可帮助您设置自动化执行角色。您将在目标账户中配置此角色。

```
AWSTemplateFormatVersion: "2010-09-09"
Description: "Create automation execution role for creating Sample Additional Role."

Parameters:
  AdminAccountId:
    Type: "String"
    Description: "Account ID for the administrator account (typically management, security or shared services)."
  AdminRoleName:
    Type: "String"
    Description: "Role name for automation administrator access."
    Default: "SampleAutomationAdministrationRole"
  ExecutionRoleName:
    Type: "String"
    Description: "Role name for automation execution."
    Default: "SampleAutomationExecutionRole"
  SessionDurationInSecs:
    Type: "Number"
    Description: "Maximum session duration in seconds."
    Default: 14400

Resources:
  # This needs to run after AdminRoleName exists.
  ExecutionRole:
    Type: "AWS::IAM::Role"
    Properties:
      RoleName: !Ref ExecutionRoleName
      MaxSessionDuration: !Ref SessionDurationInSecs
      AssumeRolePolicyDocument:
        Version: "2012-10-17"		 	 	 
        Statement:
          - Effect: "Allow"
            Principal:
              AWS:
                - !Sub "arn:aws:iam::${AdminAccountId}:role/${AdminRoleName}"
            Action:
              - "sts:AssumeRole"
      Path: "/"
      ManagedPolicyArns:
        - "arn:aws:iam::aws:policy/AdministratorAccess"
```

配置这些角色后，您可以调用 AWS Service Catalog API 来执行自动任务。视频中给出了 CLI 命令。

## Service Catalog API 的预置输入示例
<a name="sample-sc-api-input"></a>

以下是您在使用 Service Catalog `ProvisionProduct` API 配置新的 AWS Control Tower 账户或注册现有成员账户时可以向该服务目录 API 提供的输入示例：

**注意**  
要使用 API 注册现有成员账户，在调用 `ProvisionProduct` API 之前，目标账户上必须存在 I `AWSControlTowerExecution` AM 角色。您可以为新账户配置和现有账户注册使用以下示例中显示的相同输入参数。

```
{
  pathId: "lpv2-7n2o3nudljh4e",
  productId: "prod-y422ydgjge2rs",
  provisionedProductName: "Example product 1",
  provisioningArtifactId: "pa-2mmz36cfpj2p4",
  provisioningParameters: [
    {
      key: "AccountEmail",
      value: "abc@amazon.com"
    },
    {
      key: "AccountName",
      value: "ABC"
    },
    {
      key: "ManagedOrganizationalUnit",
      value: "Custom (ou-xfe5-a8hb8ml8)"
    },
    {
      key: "SSOUserEmail",
      value: "abc@amazon.com"
    },
    {
      key: "SSOUserFirstName",
      value: "John"
    },
    {
      key: "SSOUserLastName",
      value: "Smith"
    }
  ],
  provisionToken: "c3c795a1-9824-4fb2-a4c2-4b1841be4068"
}
```

有关更多信息，请参阅 [API reference for Service Catalog](https://docs.aws.amazon.com//servicecatalog/latest/dg/API_ProvisionProduct.html)。

**注意**  
请注意，`ManagedOrganizationalUnit` 值的输入字符串的格式已从 `OU_NAME` 变为 `OU_NAME (OU_ID)`。接下来的视频并未提及这一变化。

## 视频演练
<a name="automated-provisioning-video"></a>

此视频（6:58）介绍如何在 AWS Control Tower 中自动执行账户部署。为了更好地观看，请选择视频右下角的图标以将其放大为全屏。可以使用字幕。

[![AWS Videos](http://img.youtube.com/vi/LxxQTPdSFgw/0.jpg)](http://www.youtube.com/watch?v=LxxQTPdSFgw)
