我使用SQS和ECS实现了Job Observer Pattern。作业描述被推送到SQS队列进行处理。作业处理在运行ECS Docker Tasks的Auto-Scaling组内的ECS群集上运行。
每个ECS任务都会:
我希望在每个实例没有更多工作时缩小群集,最终为零实例。
查看this similar post,答案表明需要以某种方式在ASG之外处理扩展。实例可以通过显式自终止或在没有更多消息时关闭ASG实例保护来自我扩展。
这也不处理在单个实例上运行多个ECS任务的情况,因为如果其他任务并行运行,则单个任务不应该终止。
我是否仅限于自我扩展,每个实例只有一个任务?一旦实例上的所有ECS任务退出,任何方式只能终止?还有其他任何缩小的替代品吗?
答案 0 :(得分:3)
您可以使用CloudWatch Alarms with Actions:
检测并终止空闲一段时间的工作者实例
答案 1 :(得分:3)
我最终使用了:
这限制了我每个实例一个批处理作业,但对我的方案效果很好。
答案 2 :(得分:2)
该问题的另一个解决方案是2016年底宣布的AWS Batch服务。