哪个 aws 产品用于长时间运行的 ruby​​ 任务执行?

问题描述

在我的应用程序中,我非常依赖 AWS。我在 SNS 上收到了一些事件,一旦它们出现,我就需要触发长时间运行的任务。此类任务基本上是从多个 Web 服务(而不是 AWS)中提取数据,对其进行协调,并将其持久性协调结果放入数据库中。

由于数据量和请求的 Web 服务方面的请求限制,我不能让它运行时间短于几个小时。所以,我需要“一些”AWS 服务/产品,它可以让我在一个执行就绪的环境中实例化我的脚本,然后运行它几个小时。我经常使用 lambda,但由于执行的持续时间,它们在这种情况下不起作用。当然,在不执行任务的情况下,我不想为这样的服务支付任何费用。

对于应该执行无服务器长时间运行任务的情况,您会推荐来自 AWS 的哪些产品/架构?

解决方法

我将创建一个部署到 Fargate 的 ECS 任务。您可以让 SNS 消息触发立即启动任务的内容,也许是通过在 AWS Step Functions 中构建工作流,或者让 SNS 触发 Lambda 然后创建 ECS 任务,或者您可以将其从 SNS 推送到 SQS 队列并在 ECS 中定义了一项服务,该服务根据队列中等待的消息数量自动扩展。

AWS Batch 可能非常适合这种情况。它将为您管理 Fargate 部署,甚至帮助您利用现场请求来节省资金。