自动缩放可删除ECS服务中正在运行的任务(FARGATE)

时间:2019-04-01 12:47:02

标签: amazon-ecs autoscaling aws-fargate

我正在使用AWS上的Fargate运行ecs服务。那里的每个任务都完成一个操作并结束(从SQS队列中获取消息并解码/编码视频文件)。现在,我设计了如下的自动缩放策略,

  1. 如果SQS队列大小大于5,则将所需计数增加到1(每60秒重复一次)。
  2. 如果SQS队列大小小于2,则所需计数减少到1(每60秒重复一次)。

但是AWS所要做的是,当队列大小降到2以下时,它会杀死正在运行的任务,而使相应的操作“中断”。我不希望AWS终止正在运行的任务(因为它们会在命令完成后的某个时间自动消失),而只是将所需的计数设置为0,以使任务不会“重生”。因此,从字面上看,我希望我的任务在自动缩放过程中无法停止。

如何在ECS服务和aws_ecs_autoscaling_target中实现此目标。请注意,我正在使用terraform来提供服务。

谢谢。

1 个答案:

答案 0 :(得分:1)

我不得不用另一种方法解决这个问题。我必须创建一个小的Lambda函数,该函数由cloudwatch警报触发,并使用StartTask启动Fargate任务。此工作流程非常适合此处,而不是使用自动缩放策略。