对 Terraform 部署问题进行故障排除 - AWS Transfer Family

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

对 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 状态管理问题,请执行以下操作:

  1. 用于terraform import将现有资源置于 Terraform 管理之下:

    terraform import <transfer_family_server.example> s-<server-id> terraform import <transfer_family_server.example> s-<server-id>/username
  2. terraform refresh用于使用当前的真实基础架构更新状态文件

  3. 对于无法导入或存在复杂状态问题的资源,可以考虑使用terraform state rm将其从状态文件中删除,然后使用 Terraform 重新创建它们

  4. 实施一项政策,专门通过 Terraform 管理 Transfer Family 资源,以防止将来的状态漂移

  5. 使用带锁定的远程状态存储,以防止在团队合作时同时进行修改