使用 AWS re:Post 即表示您同意 AWS re:Post 使用條款

如何解決 Amazon ECS for Fargate 中的「dockertimeouterror 無法過渡到開始;等待 3m0s 後逾時」錯誤?

2 分的閱讀內容
0

我在 AWS Fargate 的 Amazon Elastic Container Service (Amazon ECS) 任務上收到「dockertimeouterror 無法過渡到開始;等待 3m0s 後逾時」錯誤。

簡短說明

當 Fargate 任務發生網路組態問題時,就會發生此錯誤。如為 Fargate,開始逾時的預設值為 3 分鐘。如果任務未在 3 分鐘內從待處理狀態翻轉到執行中狀態,則該任務會失敗並移至已停止狀態。

如為在未設定 NAT 執行個體或閘道的私有子網路中執行的 Fargate 任務,請設定正確的 Amazon Virtual Private Cloud (Amazon VPC) 端點。您必須具有下列端點:

  • **Amazon Elastic Container Registry (Amazon ECR):**從 ECR 儲存器提取映像必須使用此端點。
  • **Amazon Simple Storage Service (Amazon S3):**由於 Amazon ECR 會使用 Amazon S3 儲存您的映像層,因此必須使用此端點。若要從 Amazon ECR 下載映像,容器必須存取 Amazon ECR 才能取得映像資訊清單,並存取 Amazon S3 才能下載映像層。
  • **AWS Secrets Manager 和/或 AWS Systems Manager:**如果您參照任務定義中的 Secrets Manager 密碼或 Systems Manager Parameter Store 參數,則必須使用這些端點。您必須針對 Secrets Manager 或 Systems Manager 建立介面 VPC 端點,使這些任務可以連線至這些服務。您必須僅從託管敏感資料的特定服務 (Secrets Manager 或 System Manager) 建立端點。
  • **Amazon CloudWatch:**當 Fargate 任務使用 awslogs 作為日誌記錄驅動程式時,必須使用此端點。使用 awslogs 作為日誌紀錄驅動程式的任務會將其日誌匯出至 CloudWatch。如果您使用 awslog,且已建立 CloudWatch 的 VPC 端點,但尚未啟用,則您的任務無法連線至該端點。如果您收到下列錯誤訊息: 「DockerTimeoutError: 不能過渡到已開始;等待 3m0s 後逾時。」

解決方法

檢查您的任務定義是否使用 awslogs 日誌記錄驅動程式

完成下列步驟:

  1. 開啟 Amazon ECS 主控台
  2. 在導覽窗格中,選擇任務定義
  3. 選擇您的作業或服務所使用的作業定義,然後選擇您的作業定義名稱。
  4. 在任務定義的容器定義區段中,於容器名稱資料欄中選擇容器的展開器圖示。
  5. 日誌組態子區段中,檢查日誌驅動程式是否設定為 awslogs

**重要事項:**如果您的任務在沒有 NAT 閘道或 NAT 執行個體的私有子網路中執行,則必須使用 VPC 端點。

確認您具有適用於 Fargate 任務的 VPC 端點

完成下列步驟:

  1. 開啟 Amazon VPC 主控台
  2. 在瀏覽窗格中,選擇端點服務
  3. 檢查 com.amazonaws.region.logs 是否存在於服務名稱欄。

如果端點不存在,請建立新的端點

如果端點確實存在,請確認該端點是否與執行 Fargate 任務的 VPC 相同。若要在 VPC 主控台中執行此操作,請選擇端點,然後在端點的詳細資訊索引標籤中尋找 VPC ID

如果端點未受到與 Fargate 任務相同的 VPC 使用,請建立新的端點

如果端點受到與 Fargate 任務相同的 VPC 使用,請檢查與 VPC 相關聯的安全群組是否具有下列情況:

  • 安全群組的輸入規則必須允許來自 Fargate 任務之連接埠 443 的流量。
  • 與 Fargate 任務相關聯的安全群組必須具有輸出規則,才能將連接埠 443 的流量傳送至 VPC 端點。

相關資訊

Amazon ECR 介面 VPC 端點(AWS PrivateLink)

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