🗼

AWS Control Towerで登録したアカウントを別のOUへ移動させる

2022/03/14に公開
2

概要

AWS Control Towerで登録したアカウントを別のOUへ移動させるには少し手順が必要です。その手順を残していきます。

https://dev.classmethod.jp/articles/move-aws-accounts-between-ou-on-the-control-tower/

アカウントのOUを移動させる(失敗パターン)

AWS Organizationsで直接OUを移動させてしまった場合にどうなるかを紹介しましょう。

AWS Organizationsのコンソールへアクセス

まずはAWS Organizationsのコンソールへアクセスします。

アカウントの登録状態を確認

私のアカウント登録状態を確認します。
現在、SlidesというアカウントがSandbox OUに所属しており、今回はこれをService OUへと移動させていこうと思います。

移動させたいアカウントを選択

移動させたいアカウントのチェックボックスにチェックを入れ、アクションから移動を選択します。

移動先OUを選択

移動先のOUを選択し、AWS アカウントを移動を選択します。

移動したことを確認

移動が完了するとAWS アカウントの画面へと戻り、OUの移動が確認できます。

AWS Control Towerで登録状態を確認

AWS Control Towerのコンソールへアクセス

AWS Control Towerのコンソールへアクセスします。

アカウントを確認

アカウントのページへ移動すると先ほどOUを移動させたアカウントの状態が「登録に失敗しました」となっています。

アカウントを選択して詳細を確認します。
何やらOUを移動したことでアカウントの状態に問題があるように読み取れます。

翻訳サービスにかけるとこのような内容になっています。

AWS Control Towerは、登録されたアカウントが新しい組織単位に移動されたことを検出しました。アカウントは一貫性のない状態であり、意図しない請求が発生する可能性があります。続行するには、AWS Service Catalogでアカウントを終了させ、再度登録します。意図しない移動の場合、アカウントを元のOUに戻し、AWS Service Catalogからアカウントを更新してください。

どうやら、AWS Service Catalogでアカウントを終了してから再度登録する必要があるようです。

手順

前回の記事でAWS Control Towerのランディングゾーンを設定し、新規にOUとアカウントを作成しました。その時、わざと誤ったOUへアカウントを登録しておいたので、このアカウントを本来登録したいOUへと移動させていきます。

アカウントを再登録

AWS Service Catalogのコンソールへアクセス

AWS Service Catalogのコンソールへアクセスします。

AWS Service Catalogでアカウントを確認

プロビジョニングされた製品のページへ移動します。
AWS Control TowerのAccount Factoryで作成されたアカウントはここに表示されます。表示されない場合はアクセスフィルターがアカウントになっていることを確認してみてください。

アカウントを終了

終了するアカウントを選択し、アクションから終了を選択します。

本当に終了するか確認されるので終了と入力してプロビジョニングされた製品を終了を選択します。

少し時間がかかります。

しばらくするとアカウントが終了してリストに表示されなくなります。

AWS Control Towerでアカウントを確認

AWS Control Towerのコンソールへアクセスしアカウントを確認すると、先ほど終了させたアカウントの所属Root状態未登録になっていることが確認できます。

AWS Control Towerでアカウントを再登録

Account Factoryから再度アカウントを登録します。この際、親OUには移動先のOUを指定します。

登録するとAWS Service Catalogを参照するよう促されるのでリンクへアクセスします。

しばらくするとステータスが使用可能になってOUの移動が完了します。

エラーが発生しなかった場合は以上で完了です。

登録時、IAMロールがなくてエラーになる場合


今回は発生しませんでしたが、以前仕事で対応した時は子アカウント側に必要なIAMロールが存在しないことが原因でアカウント登録のタイミングでエラーとなり焦った記憶があります。再現こそしていませんが、その際の回復手順を残します。

手順を実施する前に管理アカウントのIDとOUを移動させるアカウントのIDを控えておいてください。SSOの画面を開きっぱなしにしておくといつでもコピーできるのでオススメです。

OUを移動させるアカウントへサインイン

管理アカウントでログインした状態でアカウントのドロップダウンメニューを開き、ロールの切り替えを選択します。

ロールの切り替えを選択します。

アカウントにOUを移動させるアカウントのID、ロールOrganizationAccountAccessRoleを入力してロールの切り替えを選択します。

先ほどのロールでOUを移動させるアカウントにサインインできました。

AWS Control Towerが利用するIAMロールを作成

IAMコンソールへアクセス

IAMコンソールへアクセスしてロールのページを開き、ロールの作成を選択します。

IAMロールの作成

信頼されたエンティティタイプにはカスタム信頼ポリシーを選び、ポリシーには次のJSON文字列を入力して次へを選択します。

{
	"Version": "2012-10-17",
	"Statement": [
		{
			"Effect": "Allow",
			"Principal": {
				"AWS": "arn:aws:iam::管理アカウントのID:root"
			},
			"Action": "sts:AssumeRole"
		}
	]
}

ポリシー選択画面ではAdministratorAccessを選択して次へを選択します。

ロール名AWSControlTowerExecution説明に任意の説明(e.g Allows full account access for enrollment.)を入力してロールを作成を選択します。

以上で必要なIAMロールの作成は完了です。
アカウントを再登録のフェーズから再度やり直すことでアカウントの登録が可能になります。

参考

Discussion