通过 Service Catalog API 在 AWS Control Tower 中自动预置账户
AWS Control Tower 与多项其他 AWS 服务集成,如 AWS Service Catalog。您可以使用这些 API 在 AWS Control Tower 中创建和预置您的成员账户。
注意
如果您在登录区设置中选择退出 IAM Identity Center,则不会使用您在使用 AWS Service Catalog API 或控制台预置账户期间提供的值。
该视频演示如何通过调用 AWS Service Catalog API,以自动批处理方式预置账户。要进行预配置,您需要从 AWS 命令行界面(CLI)调用 ProvisionProduct API,并指定一个 JSON 文件,其中包含要设置的每个账户的参数。该视频演示如何安装和使用 AWS Cloud9 开发环境来执行此项工作。如果您使用 AWS Cloudshell 而不是 AWS Cloud9,那么 CLI 命令将是一样的。
注意
您还可以通过为每个账户调用 AWS Service Catalog 的 UpdateProvisionedProduct API 来调整这种方法,以实现账户自动更新。您可以编写一个脚本来逐个更新账户。
作为一种完全不同的自动化方法,如果您熟悉 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 的预置输入示例
以下是您在使用 Service Catalog ProvisionProduct API 预置 AWS Control Tower 账户时可以向该 API 提供的输入示例:
{ 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 中自动执行账户部署。为了更好地观看,请选择视频右下角的图标以将其放大为全屏。可以使用字幕。