AWS ECS。如何确保一个任务只有一个实例在运行?

use*_*825 6 amazon-ecs

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

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

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

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

这一切看起来很容易。我唯一担心的是,我希望尽可能防止该任务的多个实例运行,即使只是很短的一段时间。

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

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

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

这似乎与它想要的正常工作方式相反,在正常工作方式中,它将确保新任务在停止旧任务之前正常运行。

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

如果我的 cron 在一段时间内不运行,这不是问题,但如果多次触发,则可能会出现问题。

sha*_*aws 2

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