故障診斷 Terraform 部署問題 - AWS Transfer Family

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

故障診斷 Terraform 部署問題

本節說明使用 Terraform 部署 Transfer Family 資源相關問題的可能解決方案。如需 Transfer Family 的 Terraform 模組一般資訊,請參閱 Transfer 系列 Terraform 模組

故障診斷 Terraform 資源建立失敗

Description

嘗試使用 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://https://github.com/aws-ia/terraform-aws-transfer-family。這些模組提供廣泛的範例,涵蓋簡單且複雜的客戶使用案例、遵循 AWS 最佳實務,並可為需要基礎設施即程式碼 (IaC) 組態協助的客戶簡化部署。

故障診斷 Terraform 狀態管理問題

Description

在 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. 使用遠端狀態儲存搭配鎖定功能,以防止在團隊中工作時並行修改