AWS Control Tower を使用すると、セキュアなマルチアカウント AWS 環境を簡単にセットアップおよび管理できます。AWS Control Tower は、AWS Organizations を使用して、いわゆるランディングゾーンを作成し、数千のお客様との協業経験に基づいて継続的なアカウント管理とガバナンスを実現します。
AWS CloudFormation を使用してインフラストラクチャをコードとして管理する場合は、AWS Control Tower のカスタマイズを使用して AWS Control Tower のランディングゾーンをカスタマイズできます。このソリューションは、カスタムテンプレートとポリシーを個々のアカウントと組織内の組織単位 (OU) にデプロイするのに役立ちます。
しかし、Terraform を使用して AWS インフラストラクチャを管理するとどうなるでしょうか。
2021 年 11 月 29 日(米国時間)より、AWS Control Tower Account Factory for Terraform (AFT) を提供できるようになりました。これは AWS Control Tower チームが管理する新しい Terraform モジュールで、デプロイパイプラインを使用して Terraform で AWS アカウントをプロビジョニングおよびカスタマイズできます。開発パイプラインのソースコードは、AWS CodeCommit、GitHub、GitHub Enterprise、または BitBucket に保存できます。AFT では、生産性を高めるために必要なすべてのリソースにアクセスできる、完全に機能するアカウントの作成を自動化できます。このモジュールは、Terraform オープンソース、Terraform Enterprise、および Terraform Cloud と連携して動作します。
ここからは、実際にどのように機能するのかを見ていきましょう。
AWS Control Tower Account Factory for Terraform の使用 まず、AWS Control Tower Account Factory for Terraform (AFT) モジュールを使用する main.tf
ファイルを作成します。
module "aft" {source = "git@github.com:aws-ia/terraform-aws-control_tower_account_factory.git"# Required Parametersct_management_account_id= "123412341234"log_archive_account_id= "234523452345"audit_account_id= "345634563456"aft_management_account_id = "456745674567"ct_home_region= "us-east-1"tf_backend_secondary_region = "us-west-2"# Optional Parametersterraform_distribution = "oss"vcs_provider = "codecommit"# Optional Feature Flagsaft_feature_delete_default_vpcs_enabled = falseaft_feature_cloudtrail_data_events= falseaft_feature_enterprise_support= false}
最初の 6 つのパラメータは必須です。前提条件として、AWS 組織の次の 4 つの AWS アカウントの ID を渡す必要があります。
次に、2 つの AWS リージョンを渡す必要があります。
その他のパラメータはオプションで、次のように、前述の main.tf
ファイルのデフォルト値に設定されています。
このような機能フラグはデフォルトでは無効になっており、有効にする場合以外は省略できます。
まず、プロジェクトを初期化し、プラグインをダウンロードします。
terraform init
次に、 を使用して AWS Control Tower 管理アカウントでログインし、デプロイを開始します。
terraform apply
はい
で確認し、しばらくするとデプロイが完了します。
ここで、AWS SSO をもう一度使用して AFT 管理アカウントでログインします。AWS CodeCommit コンソールには、AFT で作成したアカウントをカスタマイズするために使用できる 4 つのリポジトリがあります。
これらのリポジトリは、 AWS CodePipeline が管理するパイプラインでアカウント作成を自動化するために使用されます。
現在、これら 4 つのリポジトリはすべて空です。まず、AFT Terraform モジュールの GitHub リポジトリ中の sources/aft-customizations-repos
フォルダにあるコードを使用します。
aft-account-request
リポジトリの例を使用して、いくつかの AWS アカウントを作成するためのテンプレートを用意します。2 つのアカウントのうちの 1 つはソフトウェアデベロッパー用です。
ソフトウェアデベロッパーの生産性を迅速に高めるために、特定のアカウントカスタマイズを作成します。テンプレートでは、account_customizations_name
というパラメータを developer-customization
と同じ値に設定しています。
次に、aft-account-customizations
リポジトリに、developer-customization
フォルダを作成します。このフォルダに Terraform テンプレートを配置して、そのタイプの新しいアカウント用の AWS Cloud9 EC2 ベースの開発環境を自動的に作成します。オプションで、Python コードでこれを拡張して、例えば内部または外部 API を呼び出すことができます。このアプローチを使用すると、ソフトウェアデベロッパーの新規アカウントはすべて、デリバリーパイプラインを通過するにつれて開発環境の準備が整います。
変更をメイン
ブランチにプッシュします (最初にaft-account-customizations
リポジトリ、次に aft-account-request
)。これにより、パイプラインの実行がトリガーされます。数分後、2 つの新しいアカウントを使用する準備が整います。
AFT が作成したアカウントは、お客様固有の要件に基づいてカスタマイズできます。例えば、各アカウントに固有のセキュリティ設定 (IAM ロールやセキュリティグループなど) とストレージ (事前設定された Amazon Simple Storage Service (Amazon S3) バケットなど) を指定できます。
利用可能なリージョンと料金 AWS Control Tower Account Factory for Terraform (AFT) は、AWS Control Tower が利用できるすべてのリージョンで動作します。AFT を利用する際に追加費用はかかりません。料金は、ソリューションで用いるサービスに対して支払います。例えば、AWS Control Tower をセットアップすると、ランディングゾーンと必須のガードレールをセットアップするように設定された AWS のサービスのコストが発生し始めます。
このソリューションを構築する際、HashiCorp と連携しました。HashiCorp の共同創設者兼最高責任者 (CTO) である Armon Dadgar 氏は、次のように語っています。「数百または数千のユーザーがいるクラウド環境を管理することは、複雑で時間のかかるプロセスになる可能性があります。Terraform と AWS Control Tower を統合したソフトウェアデリバリーパイプラインを使用すると、すべてのアカウントで一貫したガバナンスとコンプライアンスの要件を簡単に達成できます」
このパイプラインでは、アカウント作成プロセスが提供されます。これにより、アカウントのプロビジョニングが完了するタイミングをモニタリングし、追加の Terraform モジュールをトリガーして、アカウントをさらにカスタマイズして拡張できます。独自のカスタム Terraform モジュールを使用するようにパイプラインを設定することも、一般的な製品および設定用に公開済みの Terraform モジュールから選択することもできます。
AWS Control Tower Account Factory for Terraform を使用して、AWS アカウントの作成を簡素化し、標準化します。
– Danilo
原文はこちらです。