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

时间:2020-06-03 03:35:26

标签: amazon-ecs

我要设置ECS任务以安排其他各种应用程序任务。

此任务将计划的“任务”主要涉及在另一个负载平衡服务中调用宁静的端点。

我知道还有其他方法可以执行此操作,例如使用cloudwatch触发lambda等。但是,对于我所需要的来说,这似乎过于复杂。

我打算用crontab制作一个非常简单,基于轻量级像素图像的图像,以触发宁静的呼叫。

这一切似乎很容易。我唯一需要担心的是,即使在很短的时间内,我也要尽可能避免运行此任务的多个实例。

如果我的CI / CD管道触发了此cron任务的更新,则可能会有很短的时间,新旧任务将同时运行。

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

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

这似乎与正常的工作方式背道而驰,在正常的工作方式下,它将确保新任务正常运行,并在停止旧任务之前保持健康。

是否可以?如果可以,如何配置?

如果我的老兄一段时间不跑也不是问题,但是如果有一次被多次触发,那就可能是个问题。

2 个答案:

答案 0 :(得分:1)

您可以创建ECS服务,而无需使用排定的任务,而是使用scheduled scaling将所需的服务计数缩放为1,然后再缩减为零。

答案 1 :(得分:1)

与其使用ECS服务(它确保始终运行特定数量的任务,并通过您不希望的滚动或B / G部署策略来部署),而是使用StopTask和RunTask api控制何时执行任务停止并开始-完全控制您。