

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

# 故障診斷 Terraform 部署問題
<a name="terraform-deployment-issues"></a>

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

**Topics**
+ [故障診斷 Terraform 資源建立失敗](#terraform-resource-creation)
+ [故障診斷 Terraform 狀態管理問題](#terraform-state-issues)

## 故障診斷 Terraform 資源建立失敗
<a name="terraform-resource-creation"></a>

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

## 故障診斷 Terraform 狀態管理問題
<a name="terraform-state-issues"></a>

**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
   ```

1. 使用 `terraform refresh`更新具有目前真實世界基礎設施的狀態檔案

1. 對於無法匯入或存在複雜狀態問題的資源，請考慮使用 從狀態檔案`terraform state rm`中移除它們，然後使用 Terraform 重新建立它們

1. 實作政策，僅透過 Terraform 管理 Transfer Family 資源，以防止未來狀態偏離

1. 使用遠端狀態儲存搭配鎖定功能，以防止在團隊中工作時同時進行修改