我在我的 AWS Fargate 任務上掛載 Amazon Elastic File System (Amazon EFS) 磁碟區時遇到錯誤。
簡短描述
Amazon EFS 為您的 Fargate 任務提供持續性儲存解決方案,可在不同任務之間共用檔案和資料。
下列問題可能導致您無法在 Fargate 任務上掛載 Amazon EFS 磁碟區:
- Amazon EFS 檔案系統未正確設定。
- 適用於 Amazon Elastic Container Service (Amazon ECS) 任務的 AWS Identity and Access Management (IAM) 角色沒有所需的權限。
- 存在與聯網和 Amazon Virtual Private Cloud (Amazon VPC) 組態相關的問題。
若要對無法啟動的 Amazon Elastic Container Service (Amazon ECS) 任務錯誤進行疑難排解,請使用 AWSSupport-TroubleshootECSTaskFailedToStart Runbook。然後,請參閱相關疑難排解步驟,了解您的問題。
解決方案
找出無法啟動的任務
重要事項:
- 在與 ECS 叢集資源位置相同的 AWS 區域使用 AWSSupport-TroubleshootECSTaskFailedToStart Runbook。
- 當使用 Runbook 時,您必須利用最近失敗的任務 ID。如果失敗的任務屬於 Amazon ECS 服務,請在服務利用最近期失敗的任務。失敗的任務在自動執行期間必須在 ECS:DescribeTasks 可見。預設情況下,已停止的 ECS 任務會在進入已停止狀態後 1 小時內可見。利用最近期失敗的任務 ID 可防止任務狀態清除在自動化期間中斷分析。
如需如何啟動 Runbook 的指示,請參閱 AWSSupport-TroubleshootECSTaskFailedToStart。根據自動化輸出,利用下列其中一個手動疑難排解步驟。
根據您的錯誤訊息對任務進行疑難排解
當您嘗試在 Fargate 任務上掛載 EFS 磁碟區時,可能會收到下列其中一個錯誤:
「ResourceInitializationError:無法叫用 EFS 公用程式命令來設定 EFS 磁碟區:stderr:b'mount.nfs4: 連線逾時':EFS 公用程式命令執行失敗;代碼: 32」
當 Fargate 任務因為連線時間無法連線 EFS 檔案系統時,您會收到這些錯誤。若要解決此錯誤,請完成下列疑難排解步驟:
- 開啟 Amazon EFS 主控台。
- 在導覽窗格選擇檔案系統。
- 透過選擇名稱或檔案系統 ID,選擇您想要檢查的檔案系統。
- 選擇網路以顯示現有掛載目標的清單。
- 選擇管理。
您可以針對掛載目標檢視安全群組和安全群組的傳入規則。
請確認安全群組的傳入規則允許連接埠 2049 上來自 Fargate 任務安全群組的流量。確認在此子網路層級允許網路流量。若要這麼做,請驗證網路存取控制清單是否允許檔案系統與任務之間的流量。如果不允許流量,請據以修改規則。如需詳細資訊,請參閱 Amazon Virtual Private Cloud 的安全性。
「ResourceInitializationError:無法叫用 EFS 公用程式命令來設定 EFS 磁碟區:stderr:mount.nfs4: 連線由對等互連重設:EFS 公用程式命令執行失敗;代碼: 32」
由於下列其中一個原因,您收到了上述錯誤:
- 您在建立檔案系統後立即掛載 EFS 檔案系統。
- 掛載目標的安全群組不允許連接埠 2049 上來自 Fargate 任務的傳入流量。
- 您正在使用 AWS App Mesh,而 Proxy 規則會針對連接埠 2049 封鎖傳出流量。
若要針對此錯誤進行疑難排解,請按照下列步驟操作:
- 於建立掛載目標之後,DNS 記錄最長可能需要 90 秒才能在 AWS 區域完整傳播。如果您以程式設計方式建立和掛載檔案系統,例如使用 AWS CloudFormation 範本,請實施等待條件。
- 請確認附加至 EFS 檔案系統掛載目標的傳入安全群組規則允許連接埠 2049 上來自 Fargate 任務的流量。
- 如果您正在使用 App Mesh,請確保您在 TaskDefinition 指定的 Proxy 組態包含 2049 這個 EgressIgnoredPorts。
「ResourceInitializationError:無法叫用 EFS 公用程式命令來設定 EFS 磁碟區:stderr: 無法解決 "fs-xxxxxxxxxxx.efs.us-east-1.amazonaws.com" - 請檢查您的檔案系統 ID 是否正確」
由於下列其中一個原因,您收到了上述錯誤:
- 未建立 EFS 檔案系統掛載目標,或在啟動 Fargate 任務所在的可用區域並未提供。
- 您利用自訂 DNS 伺服器作為 VPC。
- VPC DNS 主機名稱已關閉。DNS 主機名稱預設為關閉。
若要解決此錯誤,請按照下列步驟操作:
「ResourceInitializationError:無法叫用 EFS 公用程式命令來設定 EFS 磁碟區:stderr:b'mount.nfs4:掛載 127.0.0.1:/' 時存取遭到伺服器拒絕:EFS 公用程式命令執行失敗;代碼: 32」
當下列原則和許可拒絕存取檔案系統時,您會收到上述錯誤:
- 檔案系統原則
- 任務角色原則
- POSIX 檔案系統層級許可
能否存取 EFS 檔案系統可能取決於下列資源定義的許可:
- 網路存取控制清單
- 安全群組
- EFS 檔案系統原則
- ECS 任務角色 IAM 原則
- POSIX 檔案
如需詳細資訊,請參閱Amazon EFS 與 Amazon ECS 和 AWS Fargate 開發人員使用指南 – 第 2 部分。
若要針對此錯誤進行疑難排解,請檢查檔案系統原則或 ECS 任務角色 IAM 原則是否拒絕存取檔案系統。如果這些原則拒絕許可,請修改原則來授與檔案系統存取權。如果檔案系統原則不存在,則預設會將檔案系統的存取權授與建立期間的所有主體。
相關資訊
建立 Amazon EFS 檔案系統
建立和管理掛載目標和安全群組
如何在執行於 Fargate 的 Amazon ECS 容器或任務上掛載 Amazon EFS 檔案系統?
立即在檔案系統建立後掛載檔案系統失敗