全新 AWS Lambda Durable Functions——它们会取代 Step Functions 吗?
Source: Dev.to
引言
无服务器领域刚刚在我们脚下发生了变化。随着 AWS Lambda Durable Functions 于 2025 年12月发布,亚马逊推出了一个自 FaaS(函数即服务)诞生以来开发者一直在期待的功能。
Durable Functions 让你能够在 Lambda 代码中使用熟悉的 await 语法编写有状态、长时间运行的工作流。你可以暂停执行数天、数周,甚至长达一年而无需为空闲计算付费,然后在本地状态保持完整的情况下继续运行。
可用性 – 当前仅在 us-east-2(俄亥俄) 区域独占提供,计划在 2026 年第二季度进行全球 rollout。
背景:Lambda 与 Step Functions
AWS Lambda 与 AWS Step Functions 长期以来一直是无服务器架构的两大支柱:
| 方面 | AWS Lambda | AWS Step Functions |
|---|---|---|
| 主要角色 | 业务逻辑的原始计算 | 编排与低代码工作流定义 |
| 典型使用 | 编写实际执行任务的代码 | 定义状态机(ASL),协调多个 Lambda 与其他服务 |
| Step Functions 解决的历史痛点 | “Lambda 调用 Lambda” 反模式(脆弱、难调试、成本高) | 托管的状态跟踪、错误处理、重试 |
Step Functions 引入了先配置后代码的方式,并提供可视化编辑器,使非程序员或运维团队能够通过拖拽方式集成(S3 → DynamoDB → SQS 等),无需编写代码。
Step Functions 的局限性
- 步骤之间无状态 – 必须传递大型 JSON 负载来保持上下文。
- 先配置后代码的门槛 – 调试需要云端部署、执行运行、控制台日志检查以及迭代编辑 ASL JSON,导致反馈循环缓慢。
功能重叠
两项服务现在共享若干能力:
- 等待零成本 – 暂停执行最长可达一年而不为空闲计算付费。
- 内置弹性 – 自动错误处理,带指数退避和重试。
- 状态持久化 – 工作流在等待或崩溃后能够在相同位置恢复。
人体工学与开发生命周期
AWS Lambda Durable Functions(代码优先)
- 使用标准编程结构(
if、for、try/catch)。 - 代码中等待的示例:
# Python example
await step.sleep('7 days')
- 本地调试 – 使用 Jest、Pytest 或你喜欢的框架进行单元测试;模拟 durable 步骤;在本地设置断点。
- 共享库,应用熟悉的软件工程模式,并可在笔记本电脑上运行完整的集成测试(使用临时 AWS 凭证)。
AWS Step Functions(配置优先)
- 可视化可观测性 – 值班工程师可以在控制台查看状态机图,看到哪个状态失败,并直接检查输入/输出数据。
- 零代码集成 – 将 AWS 服务粘合在一起(S3 → Transcribe → DynamoDB → SES),无需编写 SDK 调用。
- 适用于主要是服务编排而非复杂业务逻辑的工作流。
价格对比
| 服务 | 计费模型 | 典型成本驱动因素 |
|---|---|---|
| Step Functions(标准工作流) | 每 1 M 次状态转换 $25 | 转换次数(例如循环) |
| Lambda Durable Functions | 请求数 + 计算时长 | 代码执行期间的 CPU 时间 |
示例:高吞吐循环
工作流:循环 10,000 次处理小项。
- Step Functions – 每次迭代 3 个状态(Task、Choice、Wait)→ 30,000 次状态转换。成本随转换次数线性增长。
- Durable Functions – 只为循环的累计计算时间付费。等待几乎免费,使得该循环相较于成千上万次转换更为廉价。
示例:长等待 + 单一操作
工作流:等待 6 个月,然后发送一封邮件。
- Step Functions – 仅几次转换 → 成本极低。
- Durable Functions – 等待期间无计算,也同样廉价,管理开销最小。
何时选择哪种方案
| 视角 | 推荐服务 |
|---|---|
| 开发者中心(代码复用、本地测试、复杂逻辑) | AWS Lambda Durable Functions |
| 运维/架构中心(可视化监控、低代码服务编排) | AWS Step Functions |
结论
AWS Lambda Durable Functions 将工作流编排引入代码层,提供强大的本地调试能力以及对计算密集型循环的成本优势。AWS Step Functions 仍然是实现可视化可观测性和零代码集成 AWS 服务的首选方案。
- 如果你是开发者 – Durable Functions 很可能满足你的大多数需求。
- 如果你是架构师或运维团队 – Step Functions 仍然提供有价值的可视化工具和对服务粘合工作流的简易性。
这两种工具将共存,各自服务于不断演进的无服务器生态系统中的不同使用场景。