Amazon Web Services ブログ
新機能 – AWS Control Tower Account Factory for Terraform
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
ファイルを作成します。
最初の 6 つのパラメータは必須です。前提条件として、AWS 組織の次の 4 つの AWS アカウントの ID を渡す必要があります。
ct_management_account_id
– AWS Control Tower 管理アカウントlog_archive_account_id
– ログアーカイブアカウントaudit_account_id
– 監査アカウントaft_management_account_id
– AFT 管理アカウント
次に、2 つの AWS リージョンを渡す必要があります。
ct_home_region
– このモジュールが実行されるリージョン。AWS Control Tower がデプロイされているリージョンと同じリージョンである必要があります。tf_backend_secondary_region
– バックエンドプライマリリージョンは AFT リージョンと同じです。このパラメータは、レプリケート先のセカンダリリージョンを定義します。AFT は、自身の状態を追跡するためのバックエンドを作成します。また、Terraform では、オープンソースバージョンを使用する場合にも使用されます。
その他のパラメータはオプションで、次のように、前述の main.tf
ファイルのデフォルト値に設定されています。
terraform_distribution
– Terraform のオープンソース (デフォルト)、Enterprise、Cloud のいずれかを選択しますvcs_provider
– AWS CodeCommit (デフォルト)、GitHub、GitHub Enterprise、または BitBucket の中から使用するバージョンコントロールシステムを選択します。
このような機能フラグはデフォルトでは無効になっており、有効にする場合以外は省略できます。
aft_feature_delete_default_vpcs_enabled
– 新しいアカウントのデフォルト VPC を自動的に削除します。aft_feature_cloudtrail_data_events
– 新しいアカウントに対して AWS CloudTrail データイベントを有効にします。このオプションは、通常、規制の厳しい環境でのコンプライアンスに必要であり、コストに影響を与える可能性があることに注意してください。aft_feature_enterprise_support
– 新しいアカウントを Enterprise Support に自動的に登録します (Enterprise Support Plan がある場合)。
まず、プロジェクトを初期化し、プラグインをダウンロードします。
次に、 を使用して AWS Control Tower 管理アカウントでログインし、デプロイを開始します。
はい
で確認し、しばらくするとデプロイが完了します。
ここで、AWS SSO をもう一度使用して AFT 管理アカウントでログインします。AWS CodeCommit コンソールには、AFT で作成したアカウントをカスタマイズするために使用できる 4 つのリポジトリがあります。
これらのリポジトリは、 AWS CodePipeline が管理するパイプラインでアカウント作成を自動化するために使用されます。
x aft-account-request
– ここで、AFT によってプロビジョニングおよび管理されるアカウントのリクエストを行います。aft-global-customizations
– このリポジトリを使用して、プロビジョニングされたすべてのアカウントを、お客様が定義したリソースでカスタマイズできます。リソースは Terraform または Python で作成できます。aft-account-customizations
– ここでは、aft-account-request
リポジトリのaccount_customizations_name
パラメータの値に応じて、プロビジョニングされたアカウントをカスタマイズできます。このようにして、アカウントが使用されるロールに応じて、さまざまなカスタマイズを作成できます。aft-account-provisioning-customizations
– このリポジトリは AWS Step Functions を使用して、新しいアカウントのプロビジョニングプロセスをカスタマイズし、追加の環境との統合を簡素化します。ステートマシンは、AWS Lambda 関数、Amazon Elastic Container Service (Amazon ECS) または タスク、AWS またはオンプレミスでホストされるカスタムアクティビティ、またはAmazon Simple Notification Service (SNS) とAmazon Simple Queue Service (SQS) を使用して、外部アプリケーションと通信できます。
現在、これら 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
原文はこちらです。