跳至内容

如何对 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 年前