持久性函数或 Step Functions
Lambda 持久性函数和 AWS Step Functions 都能够实现可靠的工作流编排,并具有自动状态管理和故障恢复功能。它们服务于不同的开发人员偏好和架构模式。持久性函数针对 Lambda 中的应用程序开发进行了优化,而 Step Functions 则专为跨 AWS 服务的工作流编排而构建。
何时使用持久性函数
在以下情况下使用持久性函数:
您的团队更喜欢使用标准编程语言和熟悉的开发工具
您的应用程序逻辑主要在 Lambda 函数中
您想要精细控制代码中的执行状态
您正在构建以 Lambda 为中心的应用程序,工作流和业务逻辑紧密耦合
您想要快速迭代,而不在代码和可视化/JSON 设计器之间切换
何时使用 Step Functions
在以下情况下使用 Step Functions:
您需要可视化工作流表示来实现跨团队可见性
您正在编排多个 AWS 服务,想要在没有自定义 SDK 代码的情况下进行本机集成
您需要零维护基础设施(无修补、运行时更新)
非技术利益相关者需要了解和验证工作流逻辑
决策框架
使用下面的问题确定哪项服务适合您的使用案例:
-
您的主要关注点是什么? Lambda 中的应用程序开发 → 持久性函数。跨 AWS 的工作流编排 → Step Functions。
-
您的首选编程模型是什么? 标准编程语言 → 持久性函数。基于图形的 DSL 或可视化设计器 → Step Functions。
-
涉及多少项 AWS 服务? 主要是 Lambda → 持久性函数。多项 AWS 服务 → Step Functions。
-
您使用什么开发工具? Lambda 开发人员体验、带有 LLM 代理的 IDE、编程语言特定的单元测试框架、AWS SAM、AWS CDK、AWS Toolkit → 持久性函数。可视化工作流生成器,AWS CDK 用于建模工作流 → Step Functions。
-
谁管理基础设施? 想要在 Lambda 中实现灵活性 → 持久性函数。想要完全托管、零维护 → Step Functions。
功能对比
下表比较了 Step Functions 和 Lambda 持久性函数之间的主要功能:
| 功能 | AWS Step Functions | Lambda 持久性函数 |
|---|---|---|
| 主要关注点 | 跨 AWS 的工作流编排 | Lambda 中的应用程序开发 |
| 服务类型 | 独立的专用工作流服务 | 在 Lambda 内运行 |
| 编程模型 | 基于图形的 Amazon States Language DSL 或 AWS CDK | 标准编程语言(JavaScript/TypeScript、Python) |
| 开发工具 | 控制台/AWS Toolkit IDE 扩展中的可视化生成器,AWS CDK | IDE 和 LLM 代理中的 Lambda DX、单元测试框架、AWS SAM、AWS Toolkit IDE 扩展 |
| 集成 | 220 多项 AWS 服务,16000 个 API | Lambda 事件驱动编程模型扩展(事件源) |
| 管理 | 完全托管、运行时不可知、零维护(无修补、运行时更新) | 在 Lambda 环境中进行管理 |
| 适用于 | 业务流程和 IT 自动化、数据处理、AI 工作流 | 分布式事务、有状态应用程序逻辑、函数编排、数据处理、AI 工作流 |
混合架构
许多应用程序都能从同时使用这两项服务中受益。一种常见模式是在 Lambda 中对应用程序级逻辑使用持久性函数,而 Step Functions 在 Lambda 函数之外的多个 AWS 服务之间协调高级工作流。
迁移注意事项
从简单入手,日益复杂:对于以 Lambda 为中心的工作流从持久性函数开始。当您需要多服务编排或可视化工作流设计时,请添加 Step Functions。
现有 Step Functions 用户:对已建立的跨服务工作流保留 Step Functions。对于需要可靠性的新 Lambda 应用程序逻辑,请考虑使用持久性函数。