本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
什么是 Step Functions?
随着 AWS Step Functions,您可以创建工作流(也称为状态机)来构建分布式应用程序、自动化流程、协调微服务以及创建数据和机器学习管道。
Step Functions 基于状态机和任务。在 Step Functions 中,状态机被称为工作流,这是一系列事件驱动的步骤。工作流程中的每个步骤都称为状态。例如,一个任务状态代表一个工作单元,而另一个任务状态代表另一个工作单元 AWS 服务执行,例如呼叫另一个 AWS 服务 或API。在 Step Functions 中,运行工作流程执行任务的实例称为执行。
状态机任务中的工作也可以使用存在于 Step Func 活动 tions 之外的工作器来完成。
在 Step Functions 的控制台中,您可以可视化、编辑和调试应用程序的工作流程。您可以检查工作流程中每个步骤的状态,以确保您的应用程序按预期顺序运行。
根据你的用例,你可以让 Step Functions 调用 AWS 用于执行任务的服务,例如 Lambda。你可以让 Step Functions 控制 AWS 服务,例如 AWS Glue,以创建提取、转换和加载工作流程。您还可以为需要人为交互的应用程序创建长时间运行的自动化工作流。
有关完整列表 AWS 提供 Step Functions 的区域,请参阅 AWS
区域表
学习如何使用 Step Functions
要学习如何使用 Step Functions,请按照 Step Functi ons Workshop
标准和快速工作流程类型
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 等到任务令牌带着回调返回。
标准工作流程和快速工作流程支持相同的集成,但不支持相同的集成模式。
-
标准工作流程支持请求响应集成。某些服务支持 Run a Job (.sync) 或等待回调 (. waitForTask代币),在某些情况下两者兼而有之。有关详细信息,请参阅以下经过优化的集成表。
-
Express 工作流程仅支持请求响应集成。
要帮助在两种类型之间做出选择,请参阅在 Step Functions 中选择工作流程类型。
AWS SDKStep Functions 中的集成
集成 服务 | 请求响应 | Run a Job-.sync | 等待回电-. waitForTask代币 |
---|---|---|---|
超过两百项服务 | 标准和快递 | 不支持 | Standard |
优化了 Step Functions 中的集成
集成 服务 | 请求响应 | Run a Job-.sync | 等待回电-. waitForTask代币 |
---|---|---|---|
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 | 不支持 |
Amazon SNS | 标准和快递 | 不支持 | Standard |
Amazon SQS | 标准和快递 | 不支持 | Standard |
AWS Step Functions | 标准和快递 | Standard | Standard |
工作流程的示例用例
Step Functions 用于管理应用程序的组件和逻辑,因此可以减少编写的代码,从而专注于快速构建和更新应用程序。下图显示了 Step Functions 工作流程的六个用例。
-
编排任务-您可以创建按特定顺序编排一系列任务或步骤的工作流程。例如,任务 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 可以对数据集中的每个项目运行一组工作流程步骤。迭代是并行运行的,这使得快速处理数据集成为可能。例如,当您的客户订购三十件商品时,您的系统需要应用相同的工作流程来准备每件商品的配送。在收集完所有物品并包装好待配送后,下一步可能是快速向客户发送一封包含追踪信息的确认电子邮件。有关入门模板的示例,请参阅使用地图处理数据。