首页 > 解决方案 > 哪个 aws 产品用于长时间运行的 ruby​​ 任务执行?

问题描述

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

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

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

标签: amazon-web-servicesaws-serverless

解决方案


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

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


推荐阅读