Control Tower の自動アカウント登録は MoveAccount API がトリガーです
はじめに
こんにちは、クラウド事業本部コンサルティング部のいたくらです。
以前、Control Tower の自動アカウント登録機能について紹介しましたが、このときは CT 登録済み OU → CT 登録済み OU への移動と、 CT 登録済み OU → CT 未登録 OU への移動しか実施していませんでした。
CT 未登録 OU → CT 登録済み OU への移動の場合、「AWSControlTowerExecution ロールを事前に作成しなくても自動登録が成功するのか?」という疑問があったので、検証してみました。
結論から言うと、自動アカウント登録は MoveAccount API イベントをトリガーとして動作するため、AWSControlTowerExecution ロールの事前作成は不要でした。
なお、本記事の検証はランディングゾーンバージョン 4.0、以下のランディングゾーン設定で実施しています。

三行まとめ
- 自動アカウント登録のトリガーは MoveAccount API イベントであり、Control Tower コンソールの「登録」ボタンではない
- MoveAccount による自動登録では AWSControlTowerExecution ロールの事前作成は不要
- Control Tower コンソールの「登録」ボタンは手動登録のワークフローであり、こちらは AWSControlTowerExecution ロールが必要
背景
先日、弊社の以下のブログにて、自動アカウント登録が有効な環境でも AWSControlTowerExecution ロールが必要であると報告されていました。
しかし、私や別の同僚の環境では自動アカウント登録が AWSControlTowerExecution ロールなしで成功したケースがありました。この違いを調査したところ、操作方法の違いが原因であることがわかりました。
公式ドキュメントの記載
自動アカウント登録の仕組みについて、公式ドキュメントには次のように記載されています。
AWS Control Tower reacts to move account events for AWS Organizations, and it remediates inheritance drift for the moved accounts immediately, on your behalf.
引用:Move and enroll accounts with auto-enrollment - AWS Control Tower
つまり、自動アカウント登録は Organizations の MoveAccount イベントをトリガーとして動作します。
また、登録の前提条件に関するドキュメントには次の記載があります。
The prerequisite to add the AWSControlTowerExecution role is not required if you have activated the AWS Control Tower auto-enroll capability in the landing zone Settings page, or if you are enrolling the account as part of a Register OU process.
自動アカウント登録が有効な場合、AWSControlTowerExecution ロールの事前作成は不要と明記されています。
「登録」ボタンと「OU 移動」の違い
上記ブログと私の環境で結果が異なった原因は、操作方法の違いです。
| 操作 | 内部的な動作 | AWSControlTowerExecution が必要か |
|---|---|---|
| Control Tower コンソールの「登録」ボタン | 手動登録ワークフロー | 必要 |
| Organizations コンソールや MoveAccount API での OU 移動 | MoveAccount イベント → 自動登録が実行 | 不要 |
上記ブログでは Control Tower コンソールの「登録」ボタンから操作していたため、手動登録のワークフローが実行され、AWSControlTowerExecution ロールが求められていました。一方、私の環境では Organizations コンソールからアカウントを登録済み OU に移動したため、自動登録が実行され、ロールなしで成功していました。
検証してみた
検証条件
- 対象アカウント
- 過去に Control Tower に登録されたことがあるアカウントだが、事前に
AWSControlTowerExecution ロールとstacksets-exec-*(StackSets 実行ロール)を削除済み
- 過去に Control Tower に登録されたことがあるアカウントだが、事前に
- 対象アカウントの現在の状態
- Control Tower 未登録(未登録 OU に配置)
- 自動アカウント登録:有効

検証手順
- 対象アカウントに AWSControlTowerExecution ロールや CloudFormation スタックが存在しないことを確認


- Organizations コンソールから対象アカウントを選択し、Control Tower 登録済み OU に移動


- 自動アカウント登録が実行されるまで待機
検証結果
AWSControlTowerExecution ロールが存在しない状態でも、Organizations コンソールからアカウントを登録済み OU に移動するだけで、自動アカウント登録が正常に完了しました。

登録後のアカウントを確認すると、ベースラインが適用され、CloudFormation スタック(AWSControlTowerExecution ロール)も正常に展開されていました。

まとめ
自動アカウント登録を利用する場合、Control Tower コンソールの「登録」ボタンではなく、Organizations コンソールや MoveAccount API を使ってアカウントを登録済み OU に移動するのが正しい操作方法です。この方法であれば AWSControlTowerExecution ロールの事前作成は不要です。
「登録」ボタンは名前こそ似ていますが、内部的には手動登録のワークフローが実行されるため、自動アカウント登録とは別物のようです。ご注意ください。
この記事がどなたかのお役に立てれば幸いです。
以上、クラウド事業本部コンサルティング部のいたくら(@itkr2305)でした!








