

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 透過 Service Catalog APIs 自動化 AWS Control Tower 中的帳戶佈建
<a name="automated-provisioning-walkthrough"></a>

AWS Control Tower 已與數個其他服務整合 AWS ，例如 AWS Service Catalog。您可以使用 APIs 在 AWS Control Tower 中建立和佈建您的成員帳戶，或註冊現有的成員帳戶。

**注意**  
如果您已在登陸區域設定中選擇退出 IAM Identity Center，則不會使用您在使用 AWS Service Catalog APIs或主控台佈建帳戶期間提供的值。

影片說明如何透過呼叫 AWS Service Catalog APIs，以自動化的批次方式佈建帳戶。對於佈建，您將從 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) 開發環境來執行此工作。如果您使用 AWS Cloudshell 而非 AWS Cloud9，CLI 命令會相同。

**注意**  
您也可以呼叫 AWS Service Catalog 每個帳戶的 [https://docs.aws.amazon.com//servicecatalog/latest/dg/API_UpdateProvisionedProduct.html](https://docs.aws.amazon.com//servicecatalog/latest/dg/API_UpdateProvisionedProduct.html) API 來調整此方法來自動化帳戶更新。您可以編寫指令碼來逐一更新帳戶。

作為完全不同的自動化方法，如果您熟悉 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 APIs來執行自動化任務。CLI 命令會在影片中提供。

## Service Catalog API 的範例佈建輸入
<a name="sample-sc-api-input"></a>

如果您使用 `ProvisionProduct` API 佈建新的 AWS Control Tower 帳戶或註冊現有的成員帳戶，以下是您可以提供給 Service Catalog API 的輸入範例：

**注意**  
若要使用 `ProvisionProduct` API 註冊現有的成員帳戶，在您呼叫 API 之前，IAM `AWSControlTowerExecution` 角色必須存在於目標帳戶上。您可以針對新帳戶佈建和現有帳戶註冊，使用下列範例中顯示的相同輸入參數。

```
{
  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"
}
```

如需詳細資訊，請參閱 [Service Catalog 的 API 參考](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)
