AWS Lambda现在允许在Lambda Managed Instances上运行的函数执行时间长达90分钟",是此前15分钟上限的6倍,这进一步模糊了Lambda调用与传统服务器之间的界限。传统同步请求的超时限制则保持不变。

Lambda的超时时间从2014年推出时的5分钟增加到了2018年的15分钟,但该限制导致开发者必须针对长时间运行的工作负载寻找变通方案。这样的常见场景包括媒体处理、金融计算、数据处理与ETL、AI推理,以及网页抓取或大文件传输,在这些场景中,任务的持续执行时间往往会超过15分钟。

正如亚马逊云科技在“宣布AWS Lambda Managed Instances支持90分钟函数超时"”一文中所指出的,运行时间更长的Lambda函数需要额外关注网络连接、临时凭证以及重复执行的问题。开发者应该确保连接和凭证在整个运行期间保持有效,并设计操作以安全地处理重试和重复处理。持久化函数(Durable Functions)同样需要保证幂等性,因为失败的步骤可能会被再次执行。亚马逊云科技团队针对幂等性发出了警告:

Lambda不保证精确一次(exactly-once)的处理。随着函数运行时间的延长,重试和重复交付的时间窗口也随之增加。你可以使用Powertools for AWS Lambda在函数代码中实现幂等性,从而确保诸如支付或数据库写入等操作即使被执行多次,也能产生相同的结果。

15分钟的限制一直是AWS社区中反复出现的痛点"。无服务器专家兼AWS Hero Yan Cui写到":

我感到有些遗憾,因为这进一步模糊了“运行服务器”与Lambda调用之间的界限。但这确实有其合理性,尤其是对于“用于智能体工作流的Lambda”这一使用场景而言。

Lambda目前主要提供两种形态:针对事件驱动型工作负载且超时时间为15分钟的函数,以及用于运行用户或AI生成代码、最长可运行8小时的MicroVMs。Lambda Managed Instances将这一模型扩展到了稳态工作负载,允许单个实例处理多个请求,并在无需管理基础设施的情况下,提供基于EC2的定价和计算选项。亚马逊云科技的首席工程师Rajesh Pandey强调了此次超时时间延长将如何简化众多部署:

我已经记不清客户问过多少次“你们什么时候才会构建‘长时间运行的Lambda函数’”了。现在它终于来了。过去围绕Lambda最大执行时长所搭建的那些“临时补丁”现在终于可以拆除了。

虽然社区的反馈大多是积极的",但也有一些人警告称,这可能会助长脆弱且成本高昂的设计模式。用户Dull_Caterpillar_642写到":

如果任务需要90分钟,那么你很可能应该使用持久化函数(Durable Functions)之类的方案(……)除非你的代码在那段时间里确实一直在做有意义的工作,而不是在等待其他事情,否则Lambda的经济效益可能对你不太有利,而像ECS Tasks或AWS Batch这样的服务可能更合适。

延长超时时间并非Lambda Managed Instances近期的唯一公告,该服务现已经支持由Graviton5驱动的EC2实例"。

在Lambda Managed Instances可用的所有区域中,现在均已经支持延长的超时时间。

查看英文原文:AWS Lambda Pushes Serverless Toward Long-Running Workloads"