本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
对 Terraform 部署问题进行故障排除
本节介绍与使用 Terraform 部署 Transfer Family 资源相关的问题的可能解决方案。有关 Transfer Family 的 Terraform 模块的一般信息,请参阅。Transfer Family terraform 模块
对 Terraform 资源创建失败进行故障排除
描述
尝试使用 Terraform 创建 Transfer Family 资源时,你会遇到以下错误:
Error: error creating Transfer Server: InvalidRequestException: The request is not valid. Error: error creating Transfer User: InvalidRequestException: Unable to create the user because the server endpoint type is incompatible with the home directory type.
原因
这些错误通常是由于配置参数不兼容或 Terraform 配置中缺少依赖项而发生的。常见原因包括:
-
端点类型和存储配置不兼容
-
缺少必需的 IAM 角色或策略
-
不正确的安全策略规范
-
VPC 终端节点配置问题
解决方案
要解决 Terraform 部署问题,请执行以下操作:
-
确保你的 Terraform 配置使用兼容的参数组合:
-
对于公共终端节点,请确保使用 Amazon S3 进行存储。
-
对于 VPC 终端节点,请验证正确的 VPC 和安全组配置。
-
-
使用带有
depends_on属性的显式依赖关系,以确保按正确的顺序创建资源。 -
确认所有 IAM 角色都具有必要的信任关系和权限。
-
使用最新版本的 Terraform AWS 提供程序,确保与 Transfer Family 的所有功能兼容。
-
对于复杂的部署和简单的用例,可以考虑使用上 GitHub 提供的官方 Transfer Family Terraform 模块。https://github.com/aws-ia/terraform-aws-transfer-family
这些模块提供了涵盖简单和复杂客户用例的大量示例,遵循 AWS 最佳实践,并且可以为需要基础设施即代码 (IaC) 配置帮助的客户简化部署。
对 Terraform 状态管理问题进行故障排除
描述
在 Terraform 之外对 Transfer Family 资源进行更改后(通过控制台或 AWS CLI),在运行terraform plan或时会遇到状态偏差或错误。terraform apply
原因
Terraform 维护着一个状态文件,用于跟踪其管理的资源。在 Terraform 之外进行更改时,状态文件会与实际资源不同步,从而在后续的 Terraform 操作中导致错误或意外行为。
解决方案
要解决使用 Transfer Family 资源的 Terraform 状态管理问题,请执行以下操作:
-
用于
terraform import将现有资源置于 Terraform 管理之下:terraform import<transfer_family_server.example>s-<server-id>terraform import<transfer_family_server.example>s-<server-id>/username -
terraform refresh用于使用当前的真实基础架构更新状态文件 -
对于无法导入或存在复杂状态问题的资源,可以考虑使用
terraform state rm将其从状态文件中删除,然后使用 Terraform 重新创建它们 -
实施一项政策,专门通过 Terraform 管理 Transfer Family 资源,以防止将来的状态漂移
-
使用带锁定的远程状态存储,以防止在团队合作时同时进行修改