😺

Account Factory CustomizationでAWSアカウントを作成後のリソース作成を自動化してみた

に公開

はじめに

Control TowerAccount Factoryを使用すれば、新しいAWSアカウントを自動で作成できます。
ただ、この作成するアカウントはControl Towerで設定される標準的な設定しか付与されません。
新規作成のアカウントに同じリソースをデプロイしておきたい場合や共通の設定をしておきたい場合は、Account Factory Customization(AFC)を使用することで、アカウント作成直後のカスタム設定を自動化することができます。
今回は以下に書かれている方法でAFCを使用してみたいと思います。

https://aws.amazon.com/jp/blogs/news/automate-account-customization-using-account-factory-customization-in-aws-control-tower/

前提条件

  • Control Towerを有効化し、Account Factoryが使用できる状態にしておいてください。
    こちらの記事に詳しい手順が書かれていますので、参考にしてください。
    https://blog.serverworks.co.jp/2024/11/18/125830

実装

ハブアカウントを作成/ロール作成

ブループリントを一元的に管理する、同じ組織内にあるハブアカウントを用意します。お客様は AFC を使用する前に、ハブアカウントに AWSControlTowerBlueprintAccess ロールを作成する必要があります。

まず、ハブアカウントを作成し、このアカウントでAWSControlTowerBlueprintAccessという名前のロールを作成します。
直接ハブアカウントにログインするとSCPでIAMロールが作成できないので、管理アカウントからSwitch Roleでハブアカウントに入りましょう。

ロール名AWSControlTowerBlueprintAccess
許可ポリシーAWSServiceCatalogAdminFullAccess

信頼ポリシー
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::管理アカウントID:role/service-role/AWSControlTowerAdmin"
            },
            "Action": "sts:AssumeRole"
        }
    ]
}

https://docs.aws.amazon.com/ja_jp/controltower/latest/userguide/step-1-create-blueprint-access-role.html

ハブアカウントへService Catalog の管理者を委任

ハブアカウントへService Catalog の管理者を委任する作業をしていきます。
この設定をすることで、Service Catalogの製品をハブアカウントで一元管理することができます。

管理アカウントでCloudShellを開き、下記を実行します。

aws organizations enable-aws-service-access --service-principal servicecatalog.amazonaws.com
aws organizations register-delegated-administrator --account-id ハブアカウントID --service-principal servicecatalog.amazonaws.com

https://qiita.com/yoyoyo_pg/items/1b052664f9d9fb9498ff
https://dev.classmethod.jp/articles/manage-aws-organizations-service-integration-and-delegation-from-cli/

ハブアカウントで製品登録

今回は新規アカウントを作成後自動でS3バケットをデプロイされる製品を作成します。

AWSTemplateFormatVersion: '2010-09-09'
Description: "Minimal test blueprint"

Resources:
  TestBucket:
    Type: AWS::S3::Bucket
    Properties:
      BucketName: "afc-test-temp2025-bucket"


アカウントに製品を紐づける

ここまでできたら、Account Factoryで管理しているアカウントに製品を紐づけます。
新規アカウントでも既存アカウントでも可能です。

新規作成 or 更新をした後、該当のアカウントに入りS3を確認してみます。

問題なく、Service Catalogが起動していますね!

おわりに

Account Factory Customization (AFC)を使用することにより、アカウント作成後の手動設定や個別デプロイの手間を削減できます。
AFCを使用したブログはあまり多くない印象ですので、今後も気づきがあれば更新していこうと思います。

GitHubで編集を提案

Discussion