Control TowerのAccount Factoryを使用し、新しいAWSアカウントを払い出す

2021.11.11

このブログでは、AWS Control Tower のアカウントファクトリーを使用して、新しいAWSアカウントを払い出す手順をご紹介します。

前提

  • Control Tower や Organizations が有効になっていること

その他、そもそも Control Tower とは?などについては、当ブログにてControl Towerに関する様々な記事が用意されているので、こちらをご覧ください。

AWS Control Tower の記事一覧 | DevelopersIO

手順

1.(オプション)Custom OU を作成する 2.Service Catalogポートフォリオの権限があるかどうか確認する 3.アカウントファクトリーにてメンバーアカウントを発行する 4.AWSアカウントが発行されたかどうか確認する

1.(オプション)Custom OU を作成する

アカウントファクトリーを使用する際に、新しいAWSアカウントをどの組織単位(OU)に所属させるかを指定できます。事前に所属予定のOUを作っておいた方がスムーズですので、ここで準備します。

新しくOUを作成する場合、まずはControl Towerコンソールを開き、組織単位を開きます。ここで「OUの追加」を選択します。

次に、作成したいOU名を入力し、実行します。

2.Service Catalogポートフォリオの権限があるかどうか確認する

前提として、Control Towerアカウントファクトリーは内部的にService Catalogポートフォリオを使用しています。このポートフォリオのリソースポリシーというべきリソース側のアクセス権限に、アカウント発行を実行するIAMエンティティ(IAMユーザー/ロール、SSOユーザー等)が許可されていないと、たとえAdministratorAccessのIAMポリシーがアタッチされていたとしても、アカウント発行がエラーになっています。

よって、まず、Service Catalogポートフォリオにてアクセス権限が許可されているかどうかを確認します。通常、Control Towerの有効化を実施したIAMエンティティであれば自動的に許可されているが、それ以外であれば、追加で許可する必要があります。こちら詳細は以下ブログにて詳しく紹介されています。

Control Towerでアカウントファクトリーからアカウントを追加しようとしたら”No launch paths found for resource”となる場合の対処方法 | DevelopersIO

Service Catalogコンソールを開き、ポートフォリオの中から、"AWS Control Tower Account Factory Portfolio"を選択します。

ポートフォリオ詳細画面の中で「グループ、ロールおよびユーザー」タブを開き、アカウントファクトリーを実行する(=現在使用している)ユーザー権限が、含まれているかどうか確認します。含まれていない場合、「グループ、ロール、ユーザー」の追加を行います。

3.アカウントファクトリーにてメンバーアカウントを発行する

こちらがメインの作業となります。

Control Towerコンソールから Account Factoryを開き、ネットワーク構成の変更を行います。

アカウントファクトリーでは、AWSアカウントの発行時に、ある程度希望する内容のVPCを一緒に作成することが可能です。これらが不要である場合、自動でVPCが作られないように設定を変更します。(もっとも、払い出したメンバーアカウントでVPCを使用したい場合でも、ここでは細かい設定ができないため、基本的にはアカウントファクトリーでVPCを作成しないことをおすすめします)

VPCを作成しない場合、以下の通り項目を設定します。

  • インターネットアクセス可能なサブネット: 無効
  • プライベートサブネットの最大数: O
  • VPC作成のリージョン: 全てチェックを外す

※尚、この設定は以降2個目のAWSアカウントを作成する際は不要となります。

それでは、メインの「アカウントの登録」に進みます。

以下項目を入力して、「アカウントの登録」を実行します。

アカウントEメール:

新規のAWSアカウントを発行する場合、新しいメールアドレスを入力します。(例:Sandbox用のアカウントである場合、aws+sandbox@example.com)。メンバーアカウントのメールアドレス設計については、以下が参考になります。

アカウントのEメールアドレスにはエイリアスを利用する(利用できる場合)

AWS アカウントを複数管理していると、それぞれに登録されているEメールアドレスも管理する必要がありますが、このEメールアドレスには重要な連絡がいくことがあります。管理を簡素化するために、お使いのメールサービスでエイリアスの機能が使える場合には aws@example.com のような開発者向けの ML を作成した上で、

  • aws+management@example.com
  • aws+log-archive@example.com
  • aws+audit@example.com
  • aws+service-abc@example.com

のようなエイリアスのEメールアドレスを各 AWS アカウントに設定することをおすすめします。

引用元)右記URLのTipを参照スタートアップにおけるマルチアカウントの考え方と AWS Control Tower のすゝめ | AWS Startup ブログ

表示名:

AWSアカウントの表示名を入力します。(例:Sanbox用のAWSアカウントである場合、Sandbox 等)

AWS SSO Eメール:

AWSアカウントの発行と一緒にSSOユーザーも発行したい場合は、ここで新しいメールアドレスを指定すると発行できます。不要である場合(推奨)、既存のSSOユーザーのメールアドレスを指定すると、新しくSSOユーザーは発行されません。

AWS SSOユーザー名:

上記に伴い新しくSSOユーザーを作成する場合は、その氏名を記入します。不要である場合は、スペースあるいは NOT USE など適当な文字列を入力します。(空欄のままだと次に進められない)

組織単位:

対象のAWSアカウントを配置したいOUを指定します。(例:Sandboxアカウントの場合、SandboxOU 等。※画像では Sandbox と表示されてますが、実際はすでに作成されているOUから選ぶことができます)

4.AWSアカウントが発行されたかどうか確認する

アカウントファクトリーから実行後、内部的に使用しているService Catalog側で当該ポートフォリオを使用し、AWSアカウント発行の処理が進行していることが確認できます。一定時間経過後(30分以内程度)、Service CatalogコンソールおよびControl Towerのアカウント画面にて、状態が登録済みになっていることを確認します。

Service Catalogの仕様上、AWSアカウントは1度に1回しか発行できないので、2つ目のAWSアカウントを発行したい場合は、上記処理が完了するのを待つ必要があります。

以上が Control Tower のアカウントファクトリーを使用して、新しいAWSアカウントを払い出す手順のご紹介でした。

参考URL

Account Factory によるアカウントのプロビジョニングと管理 - AWS Control Tower