こんにちは。
私は業務上月2-3回は組織内でAWSアカウントを発行しています。
一々手動でポチポチ作業していたため何かで自動化できるといいなーと思っていたところ、AWS Control TowerのAccount Factory for Terraform(以下AFT) というものを耳にしました。
名前の通り、アカウントを発行してくれる工場なのかな・・?(^^);;
今までTerraformは1回も触ったことがなかったので、とりあえず公式ドキュメントをメインに参考して勉強しました。
私が一番参考になったドキュメントはこちらです。 ⇣
-
Terraformで提供している公式手順:https://learn.hashicorp.com/tutorials/terraform/aws-control-tower-aft
アカウントカスタマイズの書き方は書いてないですが、全体的にAFTをどうデプロイすれば良いか具体的に書いています。 -
AWSブログ:https://aws.amazon.com/jp/blogs/news/new-aws-control-tower-account-factory-for-terraform/
AFTは、複数のAWSのサービスが複合的に繋がって動作しています。(Control Tower、S3、Lambda、CodeBuild、CodePipeLine、Service Catalog、など)裏側の構成を理解しやすかった記事です。また、AFTの基礎を理解するのに良かったです。 -
ClassMethod記事:https://dev.classmethod.jp/articles/ct-account-factory-for-terraform/
AWSとTerraform(Hashicorp)の公式ドキュメントと同じレベルで全体的なデプロイの流れをとても分かりやすく書いた記事だと思います。
ところで、なぜか、上記以外はあまり参考になる記事がありませんでした。(私のググり力が足りないかもしれませんが)
特に、一番情報が欲しかったアカウントのカスタマイズに関しては、どうコードを書けば良いか、どう実装すれば良いか全く記事が見つからなかったため、結構大変でした。
ということで、今回AFTの実装作業とテストがようやく完了しましたので、私がまとめて投稿いたします!
出来る限り詳しく、私が経験したエラーや苦労したところも全部書くようにしますのでご参考になれば幸いです。
こちらの投稿は現在もアップデート中です。(Last Updated:2022/10/03)
また、AFTに関してほしい情報や上手く解決できないエラーがありましたらコメントでお願いします。一緒に解決しましょう!
以下の一覧をご参考ください。(まだ作成中です!)
カスタマイズ系
-
AFT-GLOBAL-CUSTOMIZATIONSの書き方
:上記の公式手順に追ってAFTを実装するとアカウント発行の自動化はできますが、アカウントをカスタマイズするには自分でコードを書かないといけません。(例:Security Hubを開始させたい、XXXのロールとポリシーを作成したい、IAMのユーザーを作成したい、など何でも)AFTにて発行するすべてのアカウントに対して統一して適用したいカスタマイズがあればGlobal Customizationsリポジトリにコードを書きますが、どういう風に書けばいいかをこちらの記事で紹介します。 - To be continued...
デプロイ系
-
AFT VCS Providerの選択
:AFTはコードのバージョンコントロールのため、Github、Github Enterprise、AWS CodeCommit(デフォルト)、BitBucketのVCS Providerの選択肢を選択できます。私は最初Githubでデプロイしましたが、予想していた動きと違ったため最終的にはデフォルトのAWS CodeCommitでデプロイしました。それぞれの設定の違うところは何があるか、VCSを変えるためにTerraformコードのどこをいじればいいか、などを紹介します。
エラー系
- To be continued...