Auto-Scaling 删除了 ECS 服务中的 运行 个任务 (FARGATE)
Auto-Scaling removes running task in ECS service (FARGATE)
我是 运行 在 AWS 上使用 Fargate 的 ecs 服务。那里的每个任务完成一个操作并终止(从 SQS 队列获取消息和 decode/encode 视频文件)。现在我设计了一个如下所示的自动缩放策略,
- 如果 SQS 队列大小大于 5,则将所需计数增加到 1(每 60 秒重复一次)。
- 如果 SQS 队列大小小于 2,则将所需计数减至 1(每 60 秒重复一次)。
但是 AWS 正在做的是当队列大小低于 2 时,它会杀死 运行 个任务,留下相应的操作 "broken"。我不希望 AWS 终止 运行 任务(因为它们会在命令完成后的某个时间自动终止),而只是将所需的计数设置为 0,这样任务就不会得到 "respawned" .所以从字面上看,我希望我的任务在自动缩放期间不可停止。
如何在 ECS 服务和 aws_ecs_autoscaling_target 中实现此目的。请注意,我正在使用 terraform 来提供服务。
提前致谢。
我不得不用不同的方法解决这个问题。我必须创建一个由 cloudwatch 警报触发的小型 Lambda 函数,并使用 StartTask 启动 Fargate 任务。这个工作流程很适合这里,而不是使用自动缩放策略。
我是 运行 在 AWS 上使用 Fargate 的 ecs 服务。那里的每个任务完成一个操作并终止(从 SQS 队列获取消息和 decode/encode 视频文件)。现在我设计了一个如下所示的自动缩放策略,
- 如果 SQS 队列大小大于 5,则将所需计数增加到 1(每 60 秒重复一次)。
- 如果 SQS 队列大小小于 2,则将所需计数减至 1(每 60 秒重复一次)。
但是 AWS 正在做的是当队列大小低于 2 时,它会杀死 运行 个任务,留下相应的操作 "broken"。我不希望 AWS 终止 运行 任务(因为它们会在命令完成后的某个时间自动终止),而只是将所需的计数设置为 0,这样任务就不会得到 "respawned" .所以从字面上看,我希望我的任务在自动缩放期间不可停止。
如何在 ECS 服务和 aws_ecs_autoscaling_target 中实现此目的。请注意,我正在使用 terraform 来提供服务。
提前致谢。
我不得不用不同的方法解决这个问题。我必须创建一个由 cloudwatch 警报触发的小型 Lambda 函数,并使用 StartTask 启动 Fargate 任务。这个工作流程很适合这里,而不是使用自动缩放策略。