服务限制逻辑 - Amazon ECS
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

服务限制逻辑

Amazon ECS 服务计划程序包含限制服务任务在反复启动失败后再启动的频率逻辑。

如果一个 ECS 服务的任务总是无法进入 RUNNING 状态(直接从 PENDING 跳到 STOPPED),则后续重启尝试间隔的时间会逐渐拉长,最多达到 15 分钟。最长时间将来可能有所变化,并非一成不变。这种机制减少了无法重启的任务对 Amazon ECS 集群资源或 Fargate 基础设施成本的不利影响。如果您的服务触发了限制逻辑,则您会收到以下服务事件消息

(service service-name) is unable to consistently start tasks successfully.

Amazon ECS 永远不会阻止失败的服务重试,也不会尝试修改服务,除了延长重启的间隔时间外。服务限制逻辑不提供任何用户可调参数。

如果您将服务更新为使用新的任务定义,则您的服务会立即返回到正常的无限制状态。有关更多信息,请参阅 更新服务

以下是触发此逻辑的一些常见原因:

  • Amazon ECS 容器代理无法提取您的任务 Docker 映像。这可能是因为容器映像名称、映像、标签错误,或者缺少私有注册表身份验证或权限。在这种情况下,您还会在CannotPullContainerError停止的任务错误中看到

重要

进入 RUNNING 状态后停止的任务不会触发限制逻辑或相关服务事件消息。例如,如果因某个服务的 Elastic Load Balancing 运行状况检查失败而导致某个任务被标记为运行状况不佳,并且 Amazon ECS 取消注册了该服务并终止了该任务,则不会触发限制。即使任务的容器命令立即退出并伴随非零退出代码出现,该任务也已转为 RUNNING 状态。由于命令错误而立刻失败的任务不会触发限制或服务事件消息。