gpt4 book ai didi

amazon-web-services - 具有长期运行任务的应用程序适用于 AWS Lambda 或 AWS Step Functions

转载 作者:行者123 更新时间:2023-12-04 12:26:06 26 4
gpt4 key购买 nike

我在 AWS EC2 实例上有一个每天运行一次的应用程序。该应用程序从 Web 服务获取一些文件,逐行解析文件,更新数据库,根据数据库中的更改更新 S3 文件,向客户发送通知电子邮件以及其他一些任务。

这是一系列必须按顺序发生的逻辑任务,尽管其中一些任务可以被认为是可以并行执行的子任务。所有任务都是 Perl 脚本和 Java 程序的组合,单个 Perl 脚本充当管理器,依次执行每个任务。有些任务可能需要长达 45 分钟才能完成,整个过程可能需要长达 3 小时。

我想让整个过程无服务器。我最初的想法是使用 AWS Lambda ,其中每个任务将作为 Lambda 函数执行,直到我发现 Lambda 函数强加了 5 分钟执行超时 .好像是 AWS Step Functions 服务实际上更适合我的用例,但我的理解是该服务由 Lambda 支持,因此任务仍然有 5 分钟的执行限制。

(我也知道我必须将我的 Perl 脚本重写为 Lambda 支持的语言)。

我假设我可以通过将代码重构为较小的函数来解决执行时间限制,这些函数保证在 5 分钟内完成。不过,在我的特殊情况下,这似乎效率低下。

目前,数据库更新任务一次处理一个文件中的行。为了与 Lambda 一起使用,Lambda 函数只需要处理文件中的一行(或非常少的行),以保证不会溢出超过 5 分钟的执行时间。这将涉及在每次调用 Lambda 函数时打开和关闭与数据库的连接。此外,处理的每一行都应该导致一个条目写入文件,并存储在 S3 中。现在,我只是在内存中保留一个文件句柄,并在处理完所有行后将文件写入 S3,但使用 Lambda,我需要继续读取文件、更新文件并将其写回 S3。

我要问的是:

  • 我的用例是否不适合 AWS Lambda 和/或 AWS Step Functions?
  • 我是否误解了这些服务的工作原理?
  • 是否有其他 AWS 服务更适合我的用例?


  • 经过进一步研究,我认为 AWS Batch可能是 good idea .

    最佳答案

    所以回答你的问题:

    1) 是的,如果您有一些可以运行大约 45 分钟的东西,而您可以使用 Lambda/Step 函数对其进行设计,那么您最好获得一个 EC2 微型实例。

    2) 不,你几乎明白了。

    3) 如上所述,您想为此使用 EC2,有一篇关于使用数据管道启动/停止 EC2 实例的好文章 here这样,仅在需要时才启动实例,成本(如果有)可以忽略不计。

    我的工作通常以这种方式运行,您可以使用符合免费层级的 t2.micro 实例。

    您还可以在 EC2 实例上运行您的 perl 脚本,因此无需重写它们!

    关于amazon-web-services - 具有长期运行任务的应用程序适用于 AWS Lambda 或 AWS Step Functions,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44368629/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com