[待望アップデート] Account Factory for Terraform (AFT) に 既存AWSアカウントの追加登録が可能に!

これで新規だけでなく、すでにControl Tower使ってる人も本格導入できるぞ
2022.02.06

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

ちゃだいん(@chazuke4649)です。

AWS Control Tower Account Factory for Terraform (AFT) がアップデートして、既存のAWSアカウントをAFTの管理下に追加登録できるようになったようです!

これによって、これからControl Towerを始める人だけでなく、すでにControl Towerをしっかり利用している人も今から本格的にAFTの導入が検討できるフェーズに入ったと思います。

個人的に超待ち望んでたやつです!

そもそもAFTについては以下ブログをご覧ください。

概要

アカウントファクトリーをコードベースで実行できたり、それらアカウントのベースライン・カスタマイズのためのパイプラインがまるっと一撃でプロビジョニングできるAFTですが、個人的に惜しいところとしては既存AWSアカウントを取り込むことがまだサポートされていない点でした。

それが、なんとなくリポジトリをながめていると、すでに既存アカウントを取り込みたいというIssueが挙げられていました。

やりとりの中で、1.2.0にてちょうど既存アカウントの追加登録機能を盛り込んだバージョンがリリースされたとのことでした。

  • Enable management of Control Tower accounts that were provisioned outside of AFT
    • Specify the existing account in the aft-account-request repository, and AFT will discover it, and the workflow will continue as normal

しかし先ほどのやりとりでまだ不具合があるとされていたところ、昨日 1.3.0がリリースされてました。

上記には特に既存アカウント取り込みの不具合を解消したとは記載されてませんが、それに期待して実際にやってみることにしました。そしたらうまくいったのでその喜びのままこのブログを書いてます。

注意点

具体的な前提条件などの記載があったわけではありませんが、以下の点に注意すると良さそうです。

  • AFTに取り込むAWSアカウントは、既にControl Towerに登録済みであること

先述のIssueのコメントの中に記載がありましたが、すでにControl Towerに登録済みのAWSアカウントが対象のようです。Organizations配下だけどControl Towerはまだというアカウントが一気にControl TowerとAFT同時に追加できるかは未調査です。

  • アカウントリクエストに記載する情報は、Service Catalogの当該アカウントの情報を参照して、完全に一致させること

アカウントリクエストの account-request.tfに記載するパラメータは基本的に Service Catalogのものと一致します。今回はすでにService Catalog側に登録時の情報があるはずですので、こちらと一致させましょう。

  • account-request.tfテンプレートのmoduleブロックの中にある各サブブロックは、削除やコメントアウトせずに使った方が良さそう

意外なところだったのですが、一度 account-request.tfのmoduleブロック内にある account-tags ={}サブブロックをコメントアウトしたら、エラーになりました。仕様はわかりませんが、不要なエラー回避のために、元々サンプルに記載のあるサブブロックは除外せず網羅して設定しておいた方が間違いなさそうです。

手順

  • 1.AFT Moduleを 1.3.0 に アップグレードする(マスターアカウント作業)
  • 2.リクエストリポジトリに既存AWSアカウントを登録してプッシュ
  • 3.アカウントカスタムリポジトリに変更を加えてプッシュ
  • 4.aft-invoke-customizationステートマシンを手動実行する
  • (参考)エラーになった場合は、Step FunctionsやCodePipelineを調べる

上記手順にて行うことができました。

2.3.4.は基本的に前回記事にてAFT登録済みアカウントのカスタマイズを試しており、その手順と基本的に同じなので割愛します。 以下を参照ください。

やってみた後

以上の手順を完了し取り込みが成功し、取り込んだAWSアカウント1つに対して1つカスタマイズ用のCodePipelineが出来上がります。

下図は元々2つはAFTで発行したが、新たに2つ取り込んだアカウント用のPipelineができ、カスタマイズのジョブが走って成功した状態です。

終わりに

これでAFT本格始動できそうです。是非一度お試しあれ!

それではこの辺で。ちゃだいん(@chazuke4649)でした。