View a markdown version of this page

通过 Service Catalog API 在 AWS Control Tower 中自动预置账户 - AWS Control Tower

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

通过 Service Catalog API 在 AWS Control Tower 中自动预置账户

AWS 控制塔与其他几项 AWS 服务集成在一起,例如 AWS Service Catalog。您可以使用 API 在 AWS 控制塔中创建和预置您的成员账户,或者注册现有的成员账户。

注意

如果您在着陆区域设置中禁用了 IAM 身份中心,则在账户配置期间不会使用 SSO 用户参数(SSOUserEmailSSOUserFirstName、和SSOUserLastName)。如果需要,您可以为这些必需的参数提供占位符值,然后按照中的在 Service Catalog 中更新预置产品说明进行修改。

该视频演示如何通过调用 AWS Service Catalog API,以自动批处理方式预置账户。要进行配置,您将从 AWS 命令行接口 (CLI) 调用 ProvisionProduct API,并指定一个 JSON 文件,其中包含要设置的每个账户的参数。该视频演示如何安装和使用 AWS Cloud9 开发环境来执行此项工作。如果你使用 AWS Cloudshell 而不是 Cloud9,CLI 命令将是相同的 AWS 。

注意

您还可以通过调用每个账户的 UpdateProvisionedProduct API 来调整这种方法来自动更新账户。 AWS Service Catalog 您可以编写一个脚本来逐个更新账户。

作为一种完全不同的自动化方法,如果您熟悉 Terraform,则可以使用 AWS Control Tower Account Factory for Terraform(AFT)预置账户

自动化管理角色示例

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

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 的预置输入示例

如果您使用 ProvisionProduct API 预置新的 AWS 控制塔账户或注册现有成员账户,则可以向服务目录 API 提供以下输入示例:

注意

要使用 API 注册现有成员账户,在ProvisionProduct调用 API 之前,AWSControlTowerExecutionIAM 角色必须存在于目标账户中。您可以将以下示例中显示的相同输入参数用于新账户配置和现有账户注册。

{ 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

注意

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

视频演练

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