為何我無法在我的 AWS Fargate 任務上掛載 Amazon EFS 磁碟區?

2 分的閱讀內容
0

我在我的 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 檔案系統時,您會收到這些錯誤。若要解決此錯誤,請完成下列疑難排解步驟:

  1. 開啟 Amazon EFS 主控台
  2. 在導覽窗格選擇檔案系統
  3. 透過選擇名稱檔案系統 ID,選擇您想要檢查的檔案系統。
  4. 選擇網路以顯示現有掛載目標的清單。
  5. 選擇管理

您可以針對掛載目標檢視安全群組和安全群組的傳入規則。

請確認安全群組的傳入規則允許連接埠 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 檔案系統?

立即在檔案系統建立後掛載檔案系統失敗

AWS 官方
AWS 官方已更新 9 個月前