

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# Terraform 和 AFT 版本
<a name="version-supported"></a>

Account Factory for Terraform (AFT) 支援 Terraform 版本 `1.6.0` 或更新版本。您必須提供 Terraform 版本做為 AFT 部署程序的輸入參數，如以下範例所示。

```
terraform_version = "1.6.0"
```

## Terraform 分佈
<a name="terraform-distributions"></a>

AFT 支援三種 Terraform 分佈：
+ Terraform Community Edition
+ Terraform 雲端
+ Terraform Enterprise

這些分佈會在以下各節中說明。在 AFT 引導程序期間，提供您選擇的 Terraform 分佈做為輸入參數。如需 AFT 部署和輸入參數的詳細資訊，請參閱 [部署適用於 Terraform (AFT) 的 AWS Control Tower 帳戶工廠](aft-getting-started.md) 。

如果您選擇 Terraform Cloud 或 Terraform Enterprise 分佈，您為 指定的 [API 權](https://www.terraform.io/cloud-docs/users-teams-organizations/api-tokens)杖`terraform_token `必須是使用者或團隊 API 權杖。並非所有必要的 APIs都支援 Organization 權杖。基於安全考量，您必須藉由指派 [terraform 變數](https://www.terraform.io/cloud-docs/workspaces/variables/managing-variables)，避免將此權杖的值簽入版本控制系統 (VCS)，如以下範例所示。

```
 # 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 會下載`terraform-cli`指定 Terraform 版本的 ，以在 AFT 部署和 AFT 管道階段執行。產生的 Terraform 狀態組態會存放在 Amazon S3 儲存貯體中，並以下列格式命名：

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

AFT 也會建立 Amazon S3 儲存貯體，在另一個儲存貯體中複寫您的 Terraform 狀態組態 AWS 區域，用於災難復原，名稱為 ，格式如下：

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

建議您為這些 Terraform 狀態 Amazon S3 儲存貯體上的刪除函數啟用多重驗證 (MFA)。若要進一步了解 Terraform Community Edition，請參閱 [Terraform 文件](https://www.terraform.io/docs/cli/index.html)。

若要選取 Terraform OSS 做為分佈，請提供下列輸入參數：

```
terraform_distribution = "oss"
```

### Terraform 雲端
<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 參數存放區中的安全字串。我們建議您根據公司的安全政策和合規準則定期輪換 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 將其值標記為敏感，並將其儲存為 SSM 參數存放區 AFT 管理帳戶中的安全字串。我們建議您根據公司的安全政策和合規準則，定期輪換 Terraform 字符的值。
+ `terraform_org_name` – 此參數包含 Terraform Enterprise 組織的名稱。
+ `terraform_api_endpoint` – 此參數包含 Terraform Enterprise 環境的 URL。此參數的值格式必須為：

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

請參閱 [Terraform 文件](https://www.terraform.io/docs/enterprise/index.html)以進一步了解如何設定 Terraform Enterprise。