

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

# Terraform と AFT バージョン
<a name="version-supported"></a>

Account Factory for Terraform (AFT) は、Terraform バージョン `1.6.0` 以降をサポートしています。次の例に示すように、AFT デプロイプロセスの入力パラメータとして Terraform のバージョンを指定する必要があります。

```
terraform_version = "1.6.0"
```

## Terraform ディストリビューション
<a name="terraform-distributions"></a>

AFT は、次の 3 つの Terraform ディストリビューションをサポートしています。
+ Terraform Community Edition
+ Terraform Cloud
+ Terraform Enterprise

これらのディストリビューションについては、以降のセクションで説明します。AFT ブートストラッププロセス中に、選択した Terraform ディストリビューションを入力パラメータとして指定します。AFT デプロイと入力パラメータの詳細については、「[AWS Control Tower Account Factory for Terraform (AFT) のデプロイ](aft-getting-started.md)」を参照してください。

Terraform Cloud または Terraform Enterprise ディストリビューションを選択した場合、`terraform_token ` に指定する [API トークン](https://www.terraform.io/cloud-docs/users-teams-organizations/api-tokens)は、ユーザーまたはチーム API トークンである必要があります。組織トークンは、すべての必須 API でサポートされているわけではありません。セキュリティ上の理由から、次の例に示すように [terraform 変数](https://www.terraform.io/cloud-docs/workspaces/variables/managing-variables)を割り当てることによって、このトークンの値をバージョン管理システム (VCS、Version Control System) にチェックインしないようにする必要があります。

```
 # Sensitive variable managed in Terraform Cloud:
 terraform_token = var.terraform_cloud_token
```

### Terraform Community Edition
<a name="terraform-oss"></a>

ディストリビューションとして Terraform Community Edition を選択すると、AFT は AFT 管理アカウントで Terraform バックエンドを管理します。AFT は、AFT デプロイメントおよび AFT パイプラインフェーズ中に実行する、指定された Terraform バージョンの `terraform-cli` をダウンロードします。結果の Terraform 状態設定は、次の形式の名前で Simple Storage Service (Amazon S3) バケットに格納されます。

```
aft-backend-[account_id]-primary-region
```

AFT は、災害対策のために、次の形式の名前で、別の AWS リージョンに Terraform 状態設定をレプリケートする Simple Storage Service (Amazon S3) バケットも作成します。

```
aft-backend-[account_id]-secondary-region
```

これらの Terraform 状態の Simple Storage Service (Amazon S3) バケットの削除機能に対しては、多要素認証 (MFA、Multi-Factor Authentication) を有効にすることをお勧めします。Terraform Community Edition の詳細については、[Terraform のドキュメント](https://www.terraform.io/docs/cli/index.html)を参照してください。

ディストリビューションとして Terraform OSS を選択するには、次の入力パラメータを指定します。

```
terraform_distribution = "oss"
```

### Terraform Cloud
<a name="terraform-cloud"></a>

 ディストリビューションとして Terraform Cloud を選択すると、AFT は Terraform Cloud 組織内に次のコンポーネントのワークスペースを作成し、API 駆動型のワークフローを開始します。
+  アカウントリクエスト 
+  AFT がプロビジョニングしたアカウントの AFT カスタマイズ 
+  AFT がプロビジョニングしたアカウントのアカウントカスタマイズ 
+  AFT がプロビジョニングしたアカウントのグローバルカスタマイズ 

 Terraform Cloud が、結果の Terraform の状態設定を管理します。

 ディストリビューションとして Terraform Cloud を選択するときは、次の入力パラメータを指定します。
+  `terraform_distribution = "tfc"` 
+  `terraform_token` – このパラメータには、Terraform Cloud トークンの値が含まれます。AFT は、その値を機密としてマークし、AFT 管理アカウントの SSM パラメータストアに Secure String として保存します。会社のセキュリティポリシーとコンプライアンスガイドラインに従って、Terraform トークンの値を定期的にローテーションすることをお勧めします。Terraform トークンは、ユーザーレベルまたはチームレベルの API トークンでなければなりません。組織トークンはサポートされていません。
+  `terraform_org_name` — このパラメータには、Terraform Cloud 組織の名前が含まれます。

**注記**  
 単一の Terraform Cloud 組織で複数の AFT デプロイメントはサポートされていません。

 Terraform Cloud の設定方法の詳細については、[Terraform のドキュメント](https://www.terraform.io/docs/cloud/index.html)を参照してください。

### Terraform Enterprise
<a name="terraform-enterprise"></a>

ディストリビューションとして Terraform Enterprise を選択すると、AFT は Terraform Enterprise 組織内に次のコンポーネントのワークスペースを作成し、結果の Terraform の実行に対して API 駆動型のワークフローをトリガーします。
+ アカウントリクエスト
+ AFT によってプロビジョニングされたアカウントの AFT アカウントプロビジョニングカスタマイズ
+ AFT によってプロビジョニングされたアカウントのアカウントカスタマイズ
+ AFT によってプロビジョニングされたアカウントのグローバルカスタマイズ

結果の Terraform の状態設定は Terraform Enterprise セットアップによって管理されます。

ディストリビューションとして Terraform Enterprise を選択するには、次の入力パラメータを指定します。
+  `terraform_distribution = "tfe"` 
+ `terraform_token` — このパラメータには、Terraform Enterprise トークンの値が含まれます。AFT は、その値を機密としてマークし、AFT 管理アカウントの SSM パラメータストアに secure string として保存します。会社のセキュリティポリシーとコンプライアンスガイドラインに従って、Terraform トークンの値を定期的にローテーションすることをお勧めします。
+ `terraform_org_name` — このパラメータには、Terraform Enterprise 組織の名前が含まれます。
+ `terraform_api_endpoint` — このパラメータには、Terraform Enterprise 環境の URL が含まれます。このパラメータの値は、次の形式であることが必要です。

  ```
  https://{fqdn}/api/v2/
  ```

Terraform Enterprise の設定方法の詳細については、[Terraform のドキュメント](https://www.terraform.io/docs/enterprise/index.html)を参照してください。