ECS Fargate Auto Scaling 策略如何知道不会终止工作任务?

Gar*_*day 6 amazon-web-services amazon-ecs aws-fargate

我有一个 ECS Fargate 集群,其中的服务根据队列中的消息数量生成任务。每个任务对队列进行长轮询,一次处理一条消息。如果队列收到超过 5 条消息,则会启动一个新任务并开始接收消息。当队列低于前一个阈值的 5 条消息时,它会关闭一个任务。

我的问题是,当服务决定缩减规模时,它如何知道要终止什么任务?所有任务都可以处理消息。每个任务持续运行并从 SQS 进行长时间拉取,那么它如何知道任务处于有效关闭状态(刚刚完成一条消息)和无效关闭状态(当前正在处理一条消息)。

Mar*_*cin 3

改进任务终止存在一个悬而未决的问题,因为人们与您有同样的担忧:

从这个问题来看,您可以使用stopTimeout 最大限度地减少任务终止对进程的影响。参数为:

如果容器未自行正常退出,则在强制终止容器之前等待的持续时间(以秒为单位)。

但ESC还有一个新功能:

这样你就可以设置:

容器启动和关闭的依赖关系以及每个容器的启动和停止超时值。

因此,通常无法完全控制任务的终止,就像终止 AutoScaling 组中的实例一样。但事情正在进展中。