本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
什么是 Amazon Step Functions?
Amazon Step Functions是一项无服务器编排服务,可让您与Amazon Lambda
Step Functions 基于状态机和任务。状态机是一种工作流程。任务是工作流中的一种状态,它代表其他Amazon服务执行的单个工作单元。工作流程中的每个步骤都是一个状态。
使用 Step Functions 的内置控件,您可以检查工作流程中每个步骤的状态,以确保应用程序按预期按顺序运行。根据您的用例,您可以让 Step Functions 调用Amazon服务(例如 Lambda)来执行任务。您可以创建处理和发布机器学习模型的工作流程。您可以使用 Ste F0 控制Amazon服务,例如创建提取Amazon Glue
要通过一系列交互式模块熟悉 Step Functions 的主要功能,请参阅Amazon Step Functions研讨会
AmazonSDK 和优化的集成
要调用其他Amazon服务,您可以使用 Step Functions 的Amazon SDK 集成,也可以使用 Step Functions 的优化集成之一。
-
S AmazonDK 集成允许您直接从状态机调用两百多个Amazon服务中的任何一个,从而使您可以访问九千多个 API 操作。
-
Step Functions 的优化集成已定制,以简化状态机中的使用。
标准和快速工作流程
Step Functions 有两种工作流程类型。标准工作流程只能执行一次工作流程,最多可以运行一年。这意味着标准工作流程中的每个步骤只能执行一次。但是,Express at-least-once 工作流程可以执行工作流程,最多可以运行五分钟。这意味着 Express Workflow 中的一个或多个步骤可能会运行多次,而工作流程中的每个步骤至少执行一次。
执行是指运行工作流程来执行任务的实例。标准工作流程非常适合长时间运行、可审计的工作流程,因为它们显示执行历史和可视化调试。Express 工作流程非常适合 high-event-rate 工作负载,例如流式数据处理和 IoT 数据摄取。
标准工作流规范
-
每秒 2,000 ,000 0 0
-
每秒 4,000 个状态转换率
-
按州过渡定价
-
显示执行历史和可视化调试
-
Support 所有服务集成和模式
快速工作流规范
-
每秒 100000 000 000 000
-
几乎无限的状态转换速率
-
按处决次数和持续时间定价
-
向亚马逊
发送执行历史记录 CloudWatch -
根据启用的日志级别显示执行历史记录和可视化调试
-
Support 所有服务集成和大多数模式
有关标准和快速工作流(包括StP F定价)的详细信息,请参阅以下内容:
使用案例
Step Functions 管理应用程序的组件和逻辑,因此您可以编写更少的代码,专注于快速构建和更新应用程序。本节介绍使用Step Functions 的典型用例。
用例 #1: 函数编排

您创建一个按特定顺序运行一组 Lambda 函数(步骤)的工作流程。一个 Lambda 函数的输出传递给下一个 Lambda 函数的输入。工作流程的最后一步给出了结果。使用 Step Functions,您可以查看工作流程中的每个步骤是如何相互作用的,因此您可以确保每个步骤都能发挥其预期功能。
有关向您说明如何向您说明如何创建具有一组函数的状态机的教程,请参阅以下内容:
用例 #2: 分支

客户要求提高信用额度。使用Choice
状态,可以让 Step Functions 根据Choice
状态的输入做出决策。如果请求超出客户预先批准的信用额度,您可以让 Step Functions 将客户的请求发送给经理签署。如果请求低于客户预先批准的信用额度,您可以让 Step Functions 自动批准该申请。
用例 #3: 错误处理

Retry
在此用例中,客户请求用户名。第一次,您的客户的请求未成功。使用Retry
语句,您可以让 Step Functions 再次尝试客户的请求。第二次,您的客户的请求成功了。
Catch
在类似的用例中,客户请求一个不可用的用户名。使用Catch
语句,您可以让 Step Functions 建议可用的用户名。如果您的客户使用了可用的用户名,则可以让 Step Functions 进入工作流程的下一步,即发送确认电子邮件。如果您的客户没有使用可用的用户名,则您可以让 Step Functions 进入工作流程中的另一个步骤,即重新开始注册流程。
有关Retry
和Catch
语句的更多详细示例,请参阅以下内容:
用例 #4: 循环中的人类

您的一个客户使用银行应用程序向朋友汇款。您的客户正在等待确认电子邮件。使用回调和任务令牌,您可以让 Step Functions 告诉 Lambda 汇出客户的款项,并在客户的朋友收到款项时进行报告。在 Lambda 报告客户的朋友收到了款项后,您可以让 Step Functions 进入工作流程的下一步,即向客户发送确认电子邮件。
要查看显示带有任务令牌的回调的示例项目,请参阅以下内容:
用例 #5: 并行处理

客户将视频文件转换为五种不同的显示分辨率,因此观众可以在多台设备上观看视频。Step Functions 使用Parallel
状态输入视频文件,因此 Lambda 可以同时将其处理为五种显示分辨率。
用例 #6:动态并行

买家订购了三件商品,您需要为每件商品做好配送准备。您检查每件物品的可用性,收集每件物品,然后包装每件物品进行配送。Step Functions 使用Map
状态让 Lambda parallel 处理客户的每个项目。将客户的所有物品打包好以供配送后,Step Functions 将进入工作流程的下一步,即向客户发送一封包含跟踪信息的确认电子邮件。
要查看使用Map
状态显示动态并行性的示例项目,请参阅以下内容:
服务集成
Step Functions 集成了多个Amazon服务。要将 Step Functions 与这些服务相结合,请使用以下服务集成模式:
请求回复(默认)
-
调用服务,让 Step Functions 在获得 HTTP 响应后进入下一个状态。
运行作业 (.sync)
-
调用服务,让 Step Functions 等待任务完成。
等待带有任务令牌的回调 (. waitForTask代币)
-
使用任务令牌调用服务,然后让 Step Functions 等到任务令牌通过回调返回。
下表显示了 Step Functions 的可用服务集成和服务集成模式。
标准工作流和快速工作流支持相同的集成,但不支持相同的集成模式。Express Workflow 不支持 “运行Job” (.sync) 或 “等待回调” (. waitForTask代币)。每种集成的优化集成模式支持都不同。有关更多信息,请参阅标准工作流程与快速工作流程:
支持的区域
大多数Amazon区域都支持Step Functions。有关可以使用 StP FI 的Amazon区域列表,请参阅Amazon区域表
这是你第一次使用Step Functions 吗?
如果这是您第一次使用 Step Functions,则以下主题可帮助您了解使用 Step Functions 的不同部分,包括 Step Functions 如何与其他Amazon服务相结合: