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

Amazon ecs AWS ECS。如何确保只有一个任务实例正在运行?,amazon-ecs,Amazon Ecs,我想设置一个ECS任务来安排其他各种应用程序任务 此任务将安排的“任务”主要涉及在另一个负载平衡服务中调用restful端点 我知道还有其他方法可以做到这一点,使用cloudwatch触发lambda等。不过,对于我所需要的,这似乎过于复杂了 我打算制作一个非常简单、轻量级的基于apline的图像,使用crontab触发restful调用 这一切似乎都很容易。我唯一担心的是,我希望尽可能地防止此任务的多个实例运行,即使只是在短时间内运行 如果我的CI/CD管道触发对此cron任务的更新,那么可能

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

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

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

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

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

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

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

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

这似乎与它希望的正常工作方式相反,在停止旧任务之前,它将确保新任务已启动且健康

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


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

您可以创建一个ECS服务,并使用它将所需的服务计数扩展到1,然后返回到零

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

我可以看出这在某些情况下是多么有用。然而,对于我的特殊情况,我有许多不同的应用程序“任务”要以不同的间隔运行。我认为您的建议将要求每个应用程序“任务”都有一个ECS任务,这可能会变得有点难以管理。我最终选择了cloudwatch规则和lambda来管理日程安排。刚开始的时候,这是一个更加努力的设置,但总体来说,这似乎是最灵活和“正确”的方法。我投了赞成票,因为这个建议实际上给了我一个如何优化应用程序其他部分ECS资源的想法。是的,这就可以了。我还可以将其集成到CodePipeline中,使其在部署新版本时自动停止任务,然后重新开始。事实上,我现在更倾向于一个更健壮的SQS解决方案,现在我有了cloudwatch规则和lambda,但这可能是一个后备选项。