AWS ECS Fargate 任务与 SQS 并行化

AWS ECS Fargate task parallelization with SQS

我有一个 SQS FIFO 队列,每次我想处理数据时都会在其中发送消息。我每天发送 1-2 次批量数据,我想用 ECS Fargate 一起处理它们,因为我处理的每条消息都需要 10 分钟。此外,每次我使用一条消息时,ECS 任务都会关闭。

所以我的计划是找到一种方法来根据 SQS 可用消息触发新任务。

我找到了这篇关于 ECS Fargate 与 SQS 并行化的文章

  1. https://medium.com/nbtl/deploy-low-cost-ecs-tasks-based-on-sqs-queue-size-with-aws-cdk-8f5a47fc529d
  2. https://peritossolutions.com/aws/scaling-aws-ecs-fargate-on-application-events-with-sqs-lambda/

两者都指的是我没有使用的 ECS 服务,因为 Desired Count 变量将始终成为一项任务 运行,这将导致不必要的成本。

关于如何实现它有什么建议吗?

both refer to ECS Services that I'm not using due to the Desired Count variable which will make always a task run and this will lead to an unnecessary cost.

ECS 服务正是您在这里需要使用的。当队列中没有消息时,所需计数可以为 0,这将防止产生任何费用。您应该创建一个轮询 SQS 队列的 ECS 服务,并将 ECS 自动缩放配置为根据队列中的可用消息数从 0 扩展到 N 个服务实例。