amazon-web-services - 哪个 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 部署,甚至帮助您利用现场请求来节省资金。
推荐阅读
- azure - microsoft/iis - 连接到系统的设备无法运行
- vespa - 在发送到 Vespa 之前,是否应该从文档中删除 ASCII 控制字符?
- java - MetaMap java.lang.OutOfMemoryError:Java 堆空间
- regex - typedef c结构的一个衬里
- python - 是否可以使用 2 种服务器端语言在同一个域中呈现 2 个不同的网页
- python - python子类无法从超类导入超类
- r - 计算沿动物运动路径的点之间的距离和时间
- python - 在 NumPy 或 SciPy 中 Python 中 Wolfram Mathematica 的模拟函数
- python-3.x - 将字典写入文本文件以及在哪里可以找到该文件
- c# - ASP.Net Core:DI 和事件