写点什么

亚马逊云科技发布持久化函数,支持在 Lambda 代码中实现有状态逻辑

  • 2025-12-16
    北京
  • 本文字数:2080 字

    阅读完需:约 7 分钟

大小:839.89K时长:04:46
亚马逊云科技发布持久化函数,支持在Lambda代码中实现有状态逻辑

亚马逊云科技最近宣布推出了面向Lambda的持久化函数(Durable Functions),这是一项新功能,使开发人员能够使用标准的 Lambda 函数构建复杂的多步骤应用程序(工作流)。

 

持久化函数的核心特性是它们能够跟踪进度,在失败时自动重试,并在定义的点上暂停执行最长达 1 年,而在等待期间不会产生空闲计算成本。

 

它的设计目标是允许开发人员在函数代码内完全表达有状态的应用程序逻辑,抽象掉底层的状态机。亚马逊云科技的首席开发人员倡导者 Donnie Prakoso解释说

在启用函数的持久化执行后,会将新的开源持久化执行 SDK 添加到你的函数代码中。然后,你就可以使用 SDK 原语,如“steps”,为你的业务逻辑添加自动检查点和重试,以及“waits”以高效地暂停执行而不产生计算费用。



(图片来源:AWS文档

 

Lambda 持久化函数引入了两个核心原语来处理状态管理和恢复。第一个是借助 context.step()方法的 Step,它为开发人员编写的业务逻辑添加了自动重试和检查点。完成一个 step 后,在重放时将跳过它。第二个是借助 context.wait()方法的 Wait,它会暂停执行给定的持续时间,终止函数、暂停和恢复执行均不产生计算费用。

 

一个持久化函数的示例可能如下所示:

import { DurableContext, withDurableExecution } from "@aws/durable-execution-sdk-js";

export const handler = withDurableExecution(

async (event: any, context: DurableContext) => { const { orderId, amount, items } = event;

// Reserve inventory across multiple warehouses const inventory = await context.step("reserve-inventory", async () => { return await inventoryService.reserve(items); });

// Process payment const payment = await context.step("process-payment", async () => { return await paymentService.charge(amount); });

// Create shipment const shipment = await context.step("create-shipment", async () => { return await shippingService.createShipment(orderId, inventory);

});

return { orderId, status: 'completed', shipment }; });
复制代码

 

该功能的宣布立即引发了与 AWS Step Functions 的比较,后者在传统上使用 YAML 定义来处理复杂的无服务器编排。DataDog 的主任工程师和 AWS 英雄 AJ Stuyvenberg 在 LinkedIn 上发帖说:

持久化函数与我们已经知道的 Step Functions 非常相似,但它完全以代码而不是 yaml 步骤定义的方式来进行表达。你可以在状态之间转换、重试失败,甚至暂停/恢复长达一年,所有这些都需要使用你已经熟悉的 Lambda 事件模型(你可能喜欢也可能不喜欢)。

 

社区中有人回应了这一观点,Hacker News 上的讨论中有一个回应者说:

基本上来讲,这只是一个具有步骤的应用程序,这些步骤在共享数据库中发生进展时会用到检查点(对你来讲,这部分已经抽象出去了)。它比等效的 Step Function 风格的实现要简单得多,没那么神奇,也更便宜。

 

此外,持久化函数还提供了其他操作,用于更复杂的模式,比如,create_callback()创建一个回调,开发人员可以使用它来等待外部事件的结果,如 API 响应或人工批准,wait_for_condition()暂停直到满足特定条件,如轮询 REST API 以完成处理,以及可用于高级并发场景的 parallel()map()操作。

 

Mike Roberts指出,该功能是如何解决长期架构挑战的:

在今天的功能宣布之前,我通常会推荐使用 Step Function。但一般来讲,如果你的大部分工作已经在你的应用程序代码中完成的话,这就很麻烦了。持久化函数借助可重入机制(AWS 将为同一请求多次运行 Lambda 函数),并且会处理以前已通过的状态来使你的代码回到需要的位置。所以现在,一个请求可以超过 15 分钟,只要 Lambda 函数每次调用的“活跃”时长不超过 15 分钟即可。

 

此外,Reply 的高级顾问 Alexey Vidanov提到,有了 Lambda 持久化函数,开发人员现在可以在 Lambda 内部运行缓慢或链式的 LLM 步骤,而无需等待成本、启动容器或管理额外的计算路径:

Lambda 持久化函数将编排直接带入 Lambda。这消除了基于时间的开销,并为 LLM、ML 和 Agent 工作流解锁了更清晰的模型。

 

对于更复杂的场景,持久化函数提供了额外的操作,包括 create_callback()(等待外部事件或人工批准的结果)、wait_for_condition()(暂停直到满足特定条件),以及可用于高级并发场景的 parallel()和 map()。

 

值得注意的是,竞争对手,尤其是 Microsoft Azure,已经提供了类似的能力,Azure Durable Functions已经发布好几年了。Jason Miles 在LinkedIn帖子中提到了这一背景:

持久化函数在 Azure 中已经存在一段时间了。它们确实有其适用的场景,但你应该评估 15 分钟的运行时间是否是正确的解决方案。偶尔出现尚可,但如果你需要经常等待,并且这是最常见的情况之一,那么你可能需要将其进行进一步分解。

 

目前,Lambda 持久化函数在美国东部(俄亥俄州)AWS 区域可用,并支持JavaScript/TypeScript(Node.js 22/24)和Python(3.13/3.14)。定价详情可以在专门的定价页面上找到。

 

原文链接:

AWS Introduces Durable Functions: Stateful Logic Directly in Lambda Code

2025-12-16 10:501

评论

发布
暂无评论
发现更多内容

区块链数字版权保护--为数字版权保护赋能

13530558032

区块链农产品溯源平台搭建,一物一码追溯系统

浅谈I/O多路复用

高性能架构探索

深入理解Spring Security授权机制原理

朱季谦

security

嵌入式软件架构设计之分层设计

cdhqyj

架构 软件 嵌入式 分层

Instagram视频下载器: 4K Video Downloader

科技猫

软件 音视频 经验分享 资源分享 工具分享

新思科技解析导致汽车无钥匙进入系统易受攻击的漏洞及缺陷

InfoQ_434670063458

智慧党建平台建设--开拓新时期党建系统

13530558032

2021最新分享Java面试全套合集!

比伯

Java 编程 架构 面试 计算机

安卓推送一体解决方案

融云 RongCloud

Kylin安装部署

五分钟学大数据

kylin 3月日更

android开发经典实战!我的移动开发春季历程,大厂直通车!

欢喜学安卓

android 程序员 面试 移动开发

融云2021 X-Meetup启航 探索高并发下的高质量实时通信架构设计

融云 RongCloud

量化交易系统开发;量化策略软件,马丁策略交易

重磅官宣:Nacos2.0发布,性能提升10倍

阿里巴巴中间件

云计算 开源 nacos

阿里P7大牛整理!对Android开发的现状和未来发展的思考,吊打面试官系列!

欢喜学安卓

android 程序员 面试 移动开发

统一日志管理方案:Spring项目logback日志与logstash和Elasticsearch整合

朱季谦

ELK

从开源的历史与今天,聊聊为什么要期待HDC.Cloud 2021

脑极体

HPE的通信技术集团将如何加速电信5G的普及和应用?

VoltDB

数据库 5G VoltDB 电信

视频云大赛|视频目标分割,下一个视频算法技术爆发点?

阿里云CloudImagine

阿里云 算法 计算机视觉 音视频

java集合【12】——— ArrayList,LinkedList,Vector的相同点与区别是什么?

秦怀杂货店

Java 源码 集合

微信扫码登录技术实现的简单思考

朱季谦

redis

什么?都1202年了还不懂k8s和容器的关系?!这份k8s指南快拿走不谢!

观测云

云计算 k8s 云服务 知识星球

爱奇艺大数据生态的实时化建设

爱奇艺技术产品团队

大数据 实时数仓 数据流

I/O多路复用之EPOLL

高性能架构探索

中国唯一入选 Forrester 领导者象限,阿里云 Serverless 产品能力全球第一

阿里巴巴中间件

阿里云 Serverless Forrester Wave

区块链如何应用到食品?区块链食品安全溯源

13530558032

LeetCode题解:剑指 Offer 49. 丑数,暴力法,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

从低代码/无代码烂大街的吃瓜群众说起

李小腾

低代码 无代码开发

身份验证会影响用户体验吗?

龙归科技

身份认证 用户体验 安全性

程序员自我提升不得不知道的一些宝藏网址,收藏起来吧

北游学Java

Java 后端 资源分享

亚马逊云科技发布持久化函数,支持在Lambda代码中实现有状态逻辑_亚马逊云科技_Steef-Jan Wiggers_InfoQ精选文章