首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >具有长时间运行任务的app对AWS Lambda或AWS阶跃函数的适用性

具有长时间运行任务的app对AWS Lambda或AWS阶跃函数的适用性
EN

Stack Overflow用户
提问于 2017-06-05 12:08:57
回答 3查看 4.3K关注 0票数 6

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

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

我想让整个过程变得无服务器化。我最初的想法是使用AWS ,这样每个任务都将作为Lambda函数执行,直到我发现Lambda函数强制执行5分钟的执行超时。看起来,AWS Step函数服务实际上更适合我的用例,但我的理解是,这个服务是由Lambda支持的,所以任务仍然有5分钟的执行限制。

(我还意识到,我必须将我的Perl脚本重写为Lambda支持的语言)。

我假设我可以通过将代码重构为更小的函数来绕过执行时间限制,这样可以保证在5分钟内完成。但在我的特殊情况下,这似乎是没有效率的。

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

我想问的是:

  • 我的用例是否不适合AWS、Lambda和/或AWS步骤函数?
  • 我是否误解了这些服务的运作方式?
  • 是否还有更适合我的用例的AWS服务?

经过进一步的研究,我认为AWS批可能是好主意

EN

Stack Overflow用户

回答已采纳

发布于 2017-06-06 08:13:41

你想要的叫做活动工作者。博士:你注册了“活动”,每个人都得到了一个ARN。然后,您可以将该ARN放在Task states的资源字段中,然后运行一些代码(在Lambda中,在EC2上,在您的地下室,无论在什么地方)来轮询由该ARN识别的任务,然后再回电话报告成功或失败。“活动工人”最多可以运行一年。

AWS文档的一步一步的详细信息

作为对RTF评论的回应,这里有一个更深层次的讨论:假设您有在color_turtles.pl中给海龟着色的代码。因此,您所做的是调用CreateActivity API --参见CreateActivity.html --命名为"ColorTurtles“,它将给您返回一个ARN,一个以arn:aws开头的字符串.然后,在状态机中,使用该ARN作为资源字段的值,创建一个任务状态。然后将代码添加到color_turtles.pl中,以便使用GetActivityTask.html轮询服务--每当您运行的机器到达该任务时,它都会查找活动工作人员轮询。它将为您的轮询工作人员提供任务的输入,然后处理输入并生成一些输出,并调用SendTaskSuccess或SendTaskFailure。所有这些都只是REST HTTP调用,所以您可以在任何地方运行它们,我的意思是在任何地方;在Lambda中,在EC2实例上,或者在Internet上的任何计算机上。

票数 2
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44368629

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档