Service Catalog API による AWS Control Tower のアカウントプロビジョニングの自動化
AWS Control Tower は、AWS Service Catalog など、その他のいくつかの AWS のサービスと統合されています。API を使用して、AWS Control Tower のメンバーアカウントの作成およびプロビジョニングができます。
注記
ランディングゾーン設定で IAM Identity Center をオプトアウトした場合、AWS Service Catalog API またはコンソールを使用したアカウントプロビジョニング中に指定した値は使用されません。
この動画では、AWS Service Catalog を呼び出すことによって、自動化されたバッチ方式でアカウントをプロビジョニングする方法について説明します。プロビジョニングの場合、AWS コマンドラインインターフェイス (CLI) から ProvisionProduct API を呼び出し、セットアップする各アカウントのパラメータを含む JSON ファイルを指定します。この動画では、AWS Cloud9 開発環境をインストールして使用し、この作業を実行する方法を説明します。AWS Cloud9 の代わりに AWS Cloudshell を使用する場合、CLI コマンドは同じになります。
注記
また、このアプローチを適応させて、各アカウントの AWS Service Catalog の UpdateProvisionedProduct API を呼び出すことで、アカウントの更新を自動化することもできます。アカウントを更新するスクリプトを 1 つずつ作成できます。
Terraform を使い慣れている場合は、まったく異なるオートメーションの方法として、provision accounts with AWS Control Tower Account Factory for Terraform (AFT) (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 のプロビジョニング入力のサンプル
API を使用して AWS Control Tower アカウントをプロビジョニングする場合に、Service Catalog ProvisionProduct 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」 (Service Catalog の API リファレンス) を参照してください。
注記
ManagedOrganizationalUnit の値の入力文字列の形式が OU_NAME から OU_NAME (OU_ID) に変更されていることに注意してください。続く動画では、この変更については言及していません。
動画チュートリアル
この動画 (6:58) では、AWS Control Tower のアカウントのデプロイを自動化する方法について説明します。動画の右下にあるアイコンを選択すると、全画面表示にできます。字幕を利用できます。