什么是 Amazon Step Functions? - Amazon Step Functions
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

什么是 Amazon Step Functions?

Amazon Step Functions是一项无服务器Amazon Lambda编排服务。Amazon Web Services通过 Step Functions 的图形控制台,您可以将应用程序的工作流程视为一系列事件驱动的步骤。

Step Functions 基于状态机和任务。状态机是一种工作流程。任务是工作流中的一种状态,它代表其他Amazon服务执行的单个工作单元。工作流程中的每个步骤都是一个状态。

使用 Step Functions 的内置控件,您可以检查工作流程中每个步骤的状态,以确保应用程序按预期按顺序运行。根据您的用例,您可以让 Step Functions 调用Amazon服务(例如 Lambda)来执行任务。您可以创建处理和发布机器学习模型的工作流程。您可以使用 Step F Amazon Glueunctions 控制Amazon服务。您还可以为需要人工交互的应用程序创建长时间运行的自动化工作流程。

提示

要通过一系列交互式模块熟悉 Step Functions 的主要功能,请参阅Amazon Step Functions研讨会。或者按照这些入门教程开始使用 Step Functions 来创建信用卡申请工作流程。

AmazonSDK 和优化的集成

要调用其他Amazon服务,您可以使用 Step Functions 的Amazon SDK 集成,也可以使用 Step Functions 的优化集成之一。

标准和快速工作流程

Step Functions 有两种工作流程类型。标准工作流程只能执行一次工作流程,最多可以运行一年。这意味着标准工作流程中的每个步骤只能执行一次。但是,Express at-least-once 工作流程可以执行工作流程,最多可以运行五分钟。这意味着 Express Workflow 中的一个或多个步骤可能会运行多次,而工作流程中的每个步骤至少执行一次。

执行是指运行工作流程来执行任务的实例。标准工作流程非常适合长时间运行、可审计的工作流程,因为它们显示执行历史和可视化调试。Express 工作流程非常适合 high-event-rate 工作负载,例如流式数据处理和 IoT 数据摄取。

标准工作流规范。

  • 每秒 2,0000000000000

  • 每秒 4,000 个状态转换率

  • 按州过渡定价

  • 显示执行历史和可视化调试

  • Support 所有服务集成和模式

快速工作流规范。

  • 每秒每秒秒每秒每秒每秒

  • 几乎无限的状态转换率

  • 按处决次数和持续时间定价

  • 亚马逊发送执行历史记录 CloudWatch

  • 根据启用的日志级别显示执行历史记录和可视化调试

  • Support 所有服务集成和大多数模式

有关标准和快速工作流的详细信息。

使用案例

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 进入工作流程中的另一个步骤,即重新开始注册流程。

有关RetryCatch语句的更多详细示例,请参阅以下内容:

用例 #4: 循环中的人类


          链接

您的一个客户使用银行应用程序向朋友汇款。您的客户正在等待确认电子邮件。使用回调和任务令牌,您可以让 Step Functions 告诉 Lambda 汇出客户的款项,并在客户的朋友收到款项时进行报告。在 Lambda 报告客户的朋友收到了款项后,您可以让 Step Functions 进入工作流程的下一步,即向客户发送确认电子邮件。

要查看显示带有任务令牌的回调的示例项目,请参阅以下内容:

用例 #5: 并行处理


          Parallelism

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

用例 #6:动态并行


          链接

买家订购了三件商品,您需要为每件商品做好配送准备。您检查每件物品的可用性,收集每件物品,然后包装每件物品进行配送。使用Map状态,Step Functions 让 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代币)。每种集成的优化集成模式支持都不同。有关更多信息,请参阅标准工作流程与快速工作流程

Standard Workflows
支持的服务集成。
服务 请求响应 运行作业 (.sync) 等待回调 (.waitForTaskToken)
优化的集成 Lambda
Amazon Batch
DynamoDB
亚马逊 ECS/Amazon Fargate
Amazon SNS
Amazon SQS
Amazon Glue
SageMaker
Amazon EMR
Amazon EMR on EKS
CodeBuild
Athena
亚马逊 EKS
API Gateway
Amazon Glue DataBrew
亚马逊 EventBridge
Amazon Step Functions
AmazonSDK 集成 超过两百
Express Workflows

支持的区域

大多数Amazon区域都支持Step Functions。有关可以使用 Step Functions 的Amazon区域列表。Amazon

这是你第一次使用Step Functions 吗?

如果这是您第一次使用 Step Functions,则以下主题可帮助您了解使用 Step Functions 的不同部分,包括 Step Functions 如何与其他Amazon服务相结合: