跳至內容

如何對 Fargate 任務因 "Capacity is unavailable" 錯誤而失敗的 Amazon ECS RunTask API 問題進行疑難排解?

1 分的閱讀內容
0

我想要使​​用 Amazon Elastic Container Service (Amazon ECS) RunTask API 來啟動 AWS Fargate 任務。但由於容量不足,任務失敗。

簡短描述

如果 Amazon ECS 沒有足夠容量來啟動 Fargate 任務,則 RunTask API 會失敗並顯示以下錯誤訊息:

"Capacity is unavailable at this time. Please try again later or in a different availability zone"

若要對此錯誤進行疑難排解,請等待一段時間再重新嘗試 RunTask API。您也可以使用 AWS Step Functions 來自動化重試程序。

解決方法

稍後再重新嘗試 RunTask API。

以下做法可能會讓您在執行 RunTask 時獲得更多可用容量,並縮短等待時間:

  • 由於 Amazon ECS 是依據可用區域來管理容量,因此最佳實務是在 networkConfiguration.awsvpcConfiguration.subnets RunTask 請求參數中,設定多個位於不同可用區的子網路。
  • overrides.cpuoverrides.memory RunTask 請求參數設定為不同的 CPU 和記憶體組合。如需詳細資訊,請參閱任務 CPU 和記憶體

自動化 RunTask API

若要自動化 RunTask API 的啟動及後續重試作業,請使用 Step Functions。

如果您從 Step Functions 啟動 RunTask,且該任務由於容量限制而失敗,Step Functions 會在其 ErrorEquals 欄位中記錄 ECS.AmazonECSException。您可以使用此資訊來設定未來的重試機制。

若要設定 Step Function 工作流程,請參閱使用 Step Functions 管理 Amazon ECS 或 Fargate 任務。有關更多 Step Functions 錯誤報告的資訊,請參閱 Step Functions 中的錯誤處理

如果您經常從 Amazon EventBridge 呼叫 RunTask API,建議改為從 EventBridge 呼叫 Step Functions,以自動化您的重試機制。

AWS 官方已更新 2 年前