AWS Control Tower Account Factory for Terraform (AFT) のデプロイ - AWS Control Tower

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

AWS Control Tower Account Factory for Terraform (AFT) のデプロイ

このセクションは、既存の環境で Account Factory for Terraform (AFT) を設定する AWS Control Tower 環境の管理者を対象としています。ここでは、新しい専用の AFT 管理アカウントを使用して、Account Factory for Terraform (AFT) 環境を設定する方法について説明します。

注記

Terraform モジュールは AFT をデプロイします。このモジュールは GitHub の AFT リポジトリで入手可能で、AFT リポジトリ全体がモジュールと見なされます。

AFT リポジトリのクローンを作成する代わりに、GitHub の AFT モジュールを参照することをお勧めします。これにより、モジュールが利用可能になったときにその更新を管理して使用することができます。

AWS Control Tower Account Factory for Terraform (AFT) 機能の最新リリースの詳細については、この GitHub リポジトリのリリースファイルを参照してください。

デプロイの前提条件

AFT 環境を設定して起動する前に、次のリソースが利用可能であることが必要です。

  • AWS Control Tower ランディングゾーンのホームリージョン。詳細については、「AWS Control Tower でAWS リージョンを使用する方法」を参照してください。

  • AWS Control Tower ランディングゾーン。詳細については、「AWS Control Tower のランディングゾーンを計画する」を参照してください。

  • AFT 管理アカウント。AWS Control Tower または他の方法でプロビジョニングして AWS Control Tower に登録することができます。

  • Terraform のバージョンとディストリビューション。詳細については、「Terraform と AFT のバージョン」を参照してください。

  • コードやその他のファイルへの変更を追跡および管理するための VCS プロバイダー。デフォルトでは、AFT は を使用しますAWS CodeCommit。詳細については、「 AWS CodeCommitユーザーガイド」の「What is AWS CodeCommit?」を参照してください。

    AFT を初めてデプロイする場合に、既存の CodeCommit リポジトリがないときは、GitHub や BitBucket などの外部 VCS プロバイダーを選択する必要があります。詳細については、「Alternatives for version control of source code in AFT」を参照してください。

  • AFT をインストールする Terraform モジュールを実行できるランタイム環境。

  • AFT 機能のオプション。詳細については、「機能オプションを有効にする」を参照してください。

AWS Control Tower Account Factory for Terraform を設定して起動する

以下の手順は、Terraform のワークフローに精通していることを前提としています。AFT のデプロイの詳細については、AWS Workshop Studio ウェブサイトの「AFT 入門ラボ」を参照してください。

ステップ 1: AWS Control Tower ランディングゾーンを起動する

AWS Control Tower の開始方法」のステップを完了します。ここで、AWS Control Tower 管理アカウントを作成し、AWS Control Tower ランディングゾーンを設定します。

注記

AdministratorAccess 認証情報を持つ AWS Control Tower 管理アカウントのロールを必ず作成してください。詳細については次を参照してください:

ステップ 2: AFT の新しい組織単位を作成する (強く推奨)

AWS Control Tower ランディングゾーン に別の OU を作成することをお勧めします。この OU に AFT 管理アカウントをプロビジョニングします。AWS Control Tower 管理アカウントから新しい OU と AFT 管理アカウントを作成します。詳細については、「新しい OU を作成する」を参照してください。

ステップ 3: AFT 管理アカウントをプロビジョニングする

AFT では、AFT 管理オペレーション専用のAWSアカウントをプロビジョニングする必要があります。AWS Control Tower ランディングゾーンに関連付けられている AWS Control Tower 管理アカウントにサインインしているときに、AFT 管理アカウントを作成します。AWS Control Tower コンソールから AFT 管理アカウントをプロビジョニングするには、[組織] ページで [アカウントを作成] を選択するか、他の方法を選択します。詳細については、AWS Service Catalog「Account Factory でアカウントをプロビジョニングする」を参照してください。

注記

AFT 用に別の OU を作成した場合は、AFT 管理アカウントを作成するときに必ずこの OU を選択してください。

AFT 管理アカウントを完全にプロビジョニングするには、最大 30 分かかる場合があります。

ステップ 4: Terraform 環境がデプロイに使用可能であることを検証する

このステップは、Terraform の使用経験があり、Terraform を実行するための手順を適切に行っていることを前提としています。詳細については、HashiCorp Developer ウェブサイトの「Command: init」を参照してください。

注記

AFT は Terraform バージョン 1.6.0 以降をサポートしています。

ステップ 5: オプション 設定

  • オプションで仮想プライベートクラウド (VPC) 設定を設定する

    AFT モジュールには、AWS Control Tower が中央 AFT 管理アカウントの VPC 内にアカウントリソースをプロビジョニングするかどうかを指定する aft_enable_vpc パラメータが含まれています。デフォルトでは、パラメータは true に設定されています。このパラメータを false に設定すると、AWS Control Tower は VPC やプライベートネットワークリソース (NAT ゲートウェイや VPC エンドポイントなど) を使用せずに AFT をデプロイします。aft_enable_vpc を無効にすると、一部の使用パターンで AFT の運用コストを削減できる場合があります。VPC 設定を追加すると、false に設定されている aft_enable_vpc パラメータが上書きされます。

    注記

    aft_enable_vpc パラメータを再度有効にする (値を false から true に切り替える) には、terraform apply コマンドを 2 回連続して実行する必要があります。

    新しい VPC をプロビジョニングする代わりに、アカウント内の既存の VPC を使用するように AFT を設定できます。独自の VPC を使用するには、次の VPC 設定パラメータを指定します。

    • aft_customer_vpc_id - 既存の VPC の ID

    • aft_customer_private_subnets - VPC 内のプライベートサブネット ID のリスト

    設定例:

    module "aft" { source = "github.com/aws-ia/terraform-aws-control_tower_account_factory" # VPC configuration aft_customer_vpc_id = "vpc-0123456789abcdef0" aft_customer_private_subnets = ["subnet-0123456789abcdef0", "subnet-0123456789abcdef1"] # Other AFT parameters... }
    重要

    既存の AFT デプロイがある場合は、カスタム VPC オプションを使用することはお勧めしません。基盤となる既存の VPC 内のリソースに応じて、Lambda 関数または CodePipeline との依存関係がある場合があります。

  • オプションで Terraform プロジェクト名を設定する

    terraform_project_name パラメータを設定することで、AFT で使用される Terraform プロジェクト名をカスタマイズできます。デフォルトでは、AFT はデプロイを Terraform Cloud または Terraform Enterprise の「デフォルト」プロジェクトに配置します。

    設定例:

    module "aft" { source = "github.com/aws-ia/terraform-aws-control_tower_account_factory" # Project name configuration terraform_project_name = "my-organization-aft" # Other AFT parameters... }
    注記

    このパラメータは、Terraform Enterprise または Terraform Cloud のデプロイにのみ適用されます。

  • オプションで AFT リソースにカスタムタグを適用する

    tags パラメータを使用して、すべての AFT リソースにカスタムタグを適用できます。これらのタグは、リソースの整理、コスト配分、アクセスコントロールに役立ちます。

    設定例:

    module "aft" { source = "github.com/aws-ia/terraform-aws-control_tower_account_factory" # Custom tags configuration tags = { Environment = "Production" CostCenter = "IT-12345" Project = "AFT-Deployment" Owner = "platform-team@example.com" } # Other AFT parameters... }

    これらのタグは、AFT モジュールによって作成されたすべてのリソースに適用されます。AFT は、カスタムタグで上書きできない managed_by = "AFT" タグを自動的にすべてのリソースに追加します。

    注記

    カスタムタグは、最初のデプロイ中だけでなく、いつでも追加できます。

  • オプションで、CloudWatch ロググループと SNS トピックにAWS KMSカスタマーマネージド暗号化キー (CMK) を適用する

    ロググループと SNS トピックの KMS CMK 暗号化を有効化するには、cloudwatch_log_group_enable_cmk_encryptionsns_topic_enable_cmk_encryption の変数を設定します。

    これらの設定をオプトインすると、AFT は既存の CMK、alias/aft を使用して CloudWatch ログと SNS トピックを暗号化します。この CMK は、AFT が AFT 管理アカウントにデプロイされたときに作成され、ロググループと SNS トピックに適用されます。

    • 変数 cloudwatch_log_group_enable_cmk_encryptiontrue に設定されている場合、AFT の CloudWatch ロググループは CMK を使用して暗号化されます。変数がデフォルト値である false に設定されている場合、ログは CloudWatch ログのデフォルトによるサーバー側の暗号化を使用して暗号化されます。

    • 変数 sns_topic_enable_cmk_encryptiontrue に設定されている場合、AFT SNS トピック (aft-notifications および aft-failure-notifications) に送信される通知は、CMK を使用して暗号化されます。変数がデフォルト値である false に設定されている場合、SNS メッセージは AWS マネージドキー alias/aws/sns で暗号化されます。詳細については、「SSE の重要な用語」を参照してください。

  • オプションで CodeBuild コンピューティングタイプを変更する

    デプロイ中に、AFT が CodeBuild に使用するコンピューティングタイプを変更するには、変数 aft_codebuild_compute_type を設定します。

    受け入れられるコンピューティングタイプの詳細については、「オンデマンド環境のタイプについて」を参照してください。デフォルトのコンピューティングタイプは BUILD_GENERAL1_MEDIUM です。

ステップ 6: Account Factory for Terraform モジュールを呼び出して AFT をデプロイする

AdministratorAccess 認証情報を持つ AWS Control Tower 管理アカウント用に作成したロールで、AFT モジュールを呼び出します。AWS Control Tower は、AWS Control Tower 管理アカウントを通じて、AWS Control Tower Account Factory リクエストをオーケストレーションするために必要なすべてのインフラストラクチャを確立する Terraform モジュールをプロビジョニングします。

GitHub の AFT リポジトリで AFT モジュールを表示できます。GitHub リポジトリ全体が AFT モジュールと見なされます。AFT モジュールの実行と AFT のデプロイに必要な入力については、README ファイルを参照してください。または、Terraform レジストリで AFT モジュールを表示することもできます。

環境で Terraform を管理するために確立されたパイプラインを持っている場合は、この AFT モジュールを既存のワークフローに統合できます。それ以外の場合は、必要な認証情報で認証された環境から AFT モジュールを実行します。

タイムアウトするとデプロイが失敗します。(AWS Security Token Service STS) 認証情報を使用して、完全なデプロイに十分なタイムアウトを確保することをお勧めします。AWS STS認証情報の最小タイムアウトは 60 分です。詳細については、「AWS Identity and Access Managementユーザーガイド」の「IAM の一時的な認証情報」を参照してください。

注記

AFT が Terraform モジュールを使用してデプロイを完了するまで最大 30 分かかる場合があります。

ステップ 7: Terraform 状態ファイルを管理する

AFT をデプロイすると、Terraform 状態ファイルが生成されます。このアーティファクトは、Terraform が作成したリソースの状態を記述します。AFT バージョンを更新する予定がある場合は、必ず Terraform 状態ファイルを保存するか、Amazon S3 と DynamoDB を使用して Terraform バックエンドをセットアップします。AFT モジュールはバックエンドの Terraform 状態を管理しません。

注記

Terraform 状態ファイルを保護するのはユーザーの責任です。一部の入力変数には、プライベートの ssh キーまたは Terraform トークンなどの機密値が含まれる場合があります。デプロイ方法によって、これらの値は Terraform 状態ファイルにプレーンテキストとして表示されることがあります。詳細については、HashiCorp ウェブサイトの「Sensitive data in State」を参照してください。