自动缩放ECS群集到零实例

Jas*_*son 7 amazon-web-services amazon-ecs autoscaling

我已经使用SQS和ECS 实现了Job Observer模式.作业描述被推送到SQS队列进行处理.作业处理在运行ECS Docker Tasks的Auto-Scaling组内的ECS群集上运行.

每个ECS任务都有:

  1. 从SQS队列中读取消息
  2. 执行数据作业(~1小时)
  3. 删除邮件
  4. 循环时有更多消息

我想在每个实例没有更多工作时缩小集群,最终为零实例.

看看这篇类似的帖子,答案表明需要以某种方式在ASG之外处理扩展.实例可以通过显式自终止或通过在没有更多消息时关闭ASG实例保护来自我扩展.

这也不处理在单个实例上运行多个ECS任务的情况,因为如果其他任务并行运行,则单个任务不应终止.

我是否仅限于自我扩展,每个实例只有一个任务?一旦实例上的所有ECS任务退出,任何方式只能终止?还有其他任何规模替代?

at0*_*mzk 3

您可以将 CloudWatch Alarms 与 Actions 结合使用:

检测并终止闲置一段时间的工作实例