本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
什么是 Step Functions?
借 AWS Step Functions助,您可以创建工作流程(也称为状态机),以构建分布式应用程序、实现流程自动化、协调微服务以及创建数据和机器学习管道。
Step Functions 基于状态机和任务。在 Step Functions 中,状态机被称为工作流,这是一系列事件驱动的步骤。工作流程中的每个步骤都称为状态。例如,任务状态表示另一个 AWS 服务执行的工作单元,例如调用另一个 AWS 服务 或API。在 Step Functions 中,运行工作流程执行任务的实例称为执行。
![Step Functions 工作流程图的说明性示例。](images/step-functions-example.png)
在 Step Functions 的控制台中,您可以可视化、编辑和调试应用程序的工作流程。您可以检查工作流程中每个步骤的状态,以确保您的应用程序按预期顺序运行。
根据您的用例,您可以让 Step Functions 调用 AWS 服务(例如 Lambda)来执行任务。您可以使用 Step Functions 控制 AWS 服务 AWS Glue,例如用于创建提取、转换和加载工作流程。您还可以为需要人为交互的应用程序创建长时间运行的自动化工作流。
有关提供 Step Fun AWS ctions 的区域的完整列表,请参阅AWS
区域表
学习如何使用 Step Functions
要学习如何使用 Step Functions,请按照AWS Step Functions 研讨会
标准和快速工作流程类型
Step Functions 有两种工作流程类型:
-
标准工作流程非常适合长时间运行、可审计的工作流程,因为它们显示执行历史和可视化调试。
标准工作流程只执行一次工作流程,最多可以运行一年。这表示标准工作流中的每个步骤将只执行一次。
-
Express 工作流程非常适合 high-event-rate工作负载,例如流数据处理和物联网数据摄取。
Express at-least-once工作流程具有工作流程执行功能,最多可以运行五分钟。这表示快速工作流中的一个或多个步骤可能会运行多次,而工作流中的每个步骤至少会执行一次。
标准工作流 | 快速工作流 |
---|---|
每秒 2000 的执行速率 | 每秒 100000 的执行速率 |
每秒 4000 的状态转换速率 | 状态转换速率几乎不受限制 |
按状态转换定价 | 按执行次数和执行持续时间定价 |
显示执行历史记录和可视化调试 | 根据日志级别显示执行历史和可视化调试 |
在 Step Functions 中查看执行历史记录 |
将执行历史发送到 CloudWatch |
Support 支持与所有服务的集成。 Support 支持与某些服务的优化集成。 |
Support 支持与所有服务的集成。 |
所有服务的 Support 请求响应模式 Support 在特定服务中运行 Job 和/或等待回调模式(详情请参阅以下部分) |
所有服务的 Support 请求响应模式 |
有关 Step Functions 定价和选择工作流程类型的更多信息,请参阅以下内容:
与其他 服务集成
Step Functions 与多种 AWS 服务集成。要调用其他 AWS 服务,您可以使用两种集成类型:
要将 Step Functions 与其他服务结合起来,有三种服务集成模式:
-
调用服务,让 Step Functions 在收到HTTP响应后进入下一个状态。
-
调用服务,并让 Step Functions 等待作业完成。
-
使用任务令牌调用服务,并让 Step Functions 等到任务令牌带着回调返回。
标准工作流程和快速工作流程支持相同的集成,但不支持相同的集成模式。
Express Workflows 支持请求响应,但不支持 Run a Job (.sync) 或等待回调 (. waitForTask代币)。
有关更多信息,请参阅 在 Step Functions 中选择工作流程类型。
Step Functi AWS SDK ons 中支持的集成
服务 | 请求响应 | 运行作业 (.sync) | 等待回调 (.waitForTaskToken) |
---|---|---|---|
超过两百项服务 | 标准和快递 | 不支持 | Standard |
支持 Step Functions 中的优化集成
服务 | 请求响应 | 运行作业 (.sync) | 等待回调 (.waitForTaskToken) |
---|---|---|---|
Amazon API Gateway | 标准和快递 | 不支持 | Standard |
Amazon Athena | 标准和快递 | Standard | 不支持 |
AWS Batch | 标准和快递 | Standard | 不支持 |
Amazon Bedrock | 标准和快递 | Standard | Standard |
AWS CodeBuild | 标准和快递 | Standard | 不支持 |
Amazon DynamoDB | 标准和快递 | 不支持 | 不支持 |
Amazon ECS/Fargate | 标准和快递 | Standard | Standard |
Amazon EKS | 标准和快递 | Standard | Standard |
Amazon EMR | 标准和快递 | Standard | 不支持 |
Amazon EMR on EKS | 标准和快递 | Standard | 不支持 |
Amazon EMR Serverless | 标准和快递 | Standard | 不支持 |
Amazon EventBridge | 标准和快递 | 不支持 | Standard |
AWS Glue | 标准和快递 | Standard | 不支持 |
AWS Glue DataBrew | 标准和快递 | Standard | 不支持 |
AWS Lambda | 标准和快递 | 不支持 | Standard |
AWS Elemental MediaConvert | 标准和快递 | Standard | 不支持 |
Amazon SageMaker | 标准和快递 | Standard | 不支持 |
亚马逊 SNS | 标准和快递 | 不支持 | Standard |
Amazon SQS | 标准和快递 | 不支持 | Standard |
AWS Step Functions | 标准和快递 | Standard | Standard |
工作流程的示例用例
Step Functions 用于管理应用程序的组件和逻辑,因此可以减少编写的代码,从而专注于快速构建和更新应用程序。下图显示了 Step Functions 工作流程的六个用例。
![六种常见工作流程用例的视觉示例,如下文所述。](images/use-case-examples.png)
-
编排任务-您可以创建按特定顺序编排一系列任务或步骤的工作流程。例如,任务 A 可能是一个 Lambda 函数,它为任务 B 中的另一个 Lambda 函数提供输入。 工作流程的最后一步提供了最终结果。
-
根据数据选择任务-使用
Choice
状态,您可以让 Step Functions 根据状态的输入做出决策。例如,假设客户要求提高信用额度。如果该申请超过了客户预先批准的信用额度,则可以让 Step Functions 将客户的申请发送给经理进行签署。如果该申请低于客户预先批准的信用额度,则可以让 Step Functions 自动批准该申请。 -
错误处理 (
Retry
/Catch
)-您可以重试失败的任务,或者 catch 失败的任务并自动运行替代步骤。例如,在客户请求用户名后,第一次调用您的验证服务可能会失败,因此您的工作流程可能会重试该请求。第二个请求成功后,工作流程就可以继续了。
或者,也许客户请求的用户名无效或不可用,则
Catch
声明可能会导致 Step Functions 工作流程步骤建议使用其他用户名。有关
Retry
和的示例Catch
,请参阅处理 Step Functions 工作流程中的状态错误。 -
人性化 — Step Functions 可以在工作流程中包含人工批准步骤。例如,假设一位银行客户试图向朋友汇款。通过回调和任务令牌,您可以让 Step Functions 等到客户的朋友确认转账,然后 Step Functions 将继续工作流程,通知银行客户转账已完成。
有关示例,请参阅使用亚马逊SQS、亚马逊SNS和 Lambda 创建回调模式示例。
-
并行处理 — 使用
Parallel
状态,Step Functions 可以并行处理输入。例如,客户可能需要将视频文件转换为多种显示分辨率,以便观看者可以在多台设备上观看视频。您的工作流程可以将原始视频文件发送到多个 Lambda 函数,或者使用优化的 AWS Elemental MediaConvert 集成将视频同时处理为多种显示分辨率。 -
动态并行性-使用
Map
状态,Step Functions 可以对数据集中的每个项目运行一组工作流程步骤。迭代是并行运行的,这使得快速处理数据集成为可能。例如,当您的客户订购三十件商品时,您的系统需要应用相同的工作流程来准备每件商品的配送。在收集完所有物品并包装好待配送后,下一步可能是快速向客户发送一封包含追踪信息的确认电子邮件。有关入门模板的示例,请参阅使用 Map 动态处理数据。