首页 > 解决方案 > AWS ECS。如何确保只有一个任务实例正在运行?

问题描述

我想设置一个 ECS 任务来安排各种其他应用程序任务。

此任务将安排的“任务”主要涉及在另一个负载平衡服务中调用 restful 端点。

我知道还有其他方法可以做到这一点,使用 cloudwatch 触发 lambda 等。但是这对于我需要的东西来说似乎过于复杂。

我打算只用一个 crontab 制作一个非常简单、轻量级的基于 apline 的图像来触发 restful 调用。

这一切似乎都很容易。我唯一担心的是,我想尽可能地阻止这个任务的多个实例运行,即使只是很短的一段时间。

如果我的 CI/CD 管道触发了对这个 cron 任务的更新,那么可能会有一小段时间,新旧任务将同时运行。

因此,一个 cron 任务被触发两次的可能性很小。

我想做的是让 ECS 在尝试启动新任务之前完全停止当前正在运行的任务。

这似乎与它想要的正常工作方式背道而驰,在这种方式下,它将确保新任务已启动,并且在停止旧任务之前是健康的。

这可能吗,如果可以,我该如何配置?

如果我的 crons 有一段时间没有运行,这不是问题,但如果任何一个被多次触发,这可能是一个问题。

标签: amazon-ecs

解决方案


而不是使用 ECS 服务(确保特定数量的任务始终运行并通过滚动或 B/G 部署策略进行部署,这不是您想要的) - 如何使用 StopTask 和 RunTask api 来控制任务何时停止和启动- 让您完全控制。


推荐阅读