

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 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 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)必须是 User 或 Team API 令牌。并非所有必需的 API 都支持 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 版本的 `terraform-cli`，以便在 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 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 Parameter Store 中。我们建议您根据公司的安全策略和合规性准则定期轮换 Terraform 令牌的值。Terraform 令牌应是 User 或 Team 级别的 API 令牌。不支持 Organization 令牌。
+  `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 Parameter Store 中。我们建议您根据公司的安全策略和合规性准则定期轮换 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)。