什么是 AWS Step Functions? - AWS Step Functions

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

什么是 AWS Step Functions?

AWS Step Functions 是一项无服务器编排服务,可让您与AWS Lambda函数和其他功能集成 AWS 服务 以构建关键业务应用程序。借助 Step Functions 的图形控制台,您可以将应用程序的工作流视为一系列事件驱动的步骤。

Step Functions 基于状态机和任务。在 Step Functions 中,工作流被称为状态机,是一系列由事件驱动的步骤。工作流中的每个步骤都称为状态。Task状态代表其他 AWS 服务(例如 AWS Lambda)执行的工作单元。任务状态可以调用任何 AWS 服务 或 API。

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

提示

要通过一系列交互式模块熟悉 Step Functions 的主要功能,请参阅工作 AWS Step Functions坊。您也可以按照以下入门教程,使用 Step Functions 来创建一个信用卡应用程序工作流。

AWS SDK 和优化的集成

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

  • AWS SDK 集成允许您直接从状态机调用 200 多个 AWS 服务中的任何一个,从而可以访问九千多个 API 操作。

  • Step Functions 的优化集成经过自定义,可简化在状态机中的使用。

标准和快速工作流

Step Functions 包含两种工作流类型。标准工作流包含仅一次工作流执行,并且最多可以运行一年。这表示标准工作流中的每个步骤将只执行一次。但是,Express at-least-once 工作流程具有工作流程执行功能,最多可以运行五分钟。这表示快速工作流中的一个或多个步骤可能会运行多次,而工作流中的每个步骤至少会执行一次。

执行是指运行工作流以执行任务的实例。标准工作流非常适合长时间运行、可审计的工作流程,因为这类工作流会显示执行历史记录和可视化调试。Express 工作流程非常适合 high-event-rate 工作负载,例如流数据处理和物联网数据摄取。

标准工作流规范

  • 每秒 2000 的执行速率

  • 每秒 4000 的状态转换速率

  • 按状态转换定价

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

  • 支持所有服务集成和模式

快速工作流规范

  • 每秒 100000 的执行速率

  • 状态转换速率几乎不受限制

  • 按执行次数和执行持续时间定价

  • Amazon 发送执行历史记录 CloudWatch

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

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

有关标准和快速工作流的更多信息,包括 Step Functions 定价,请参阅以下内容:

使用案例

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:并行处理

并行

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

用例 #6:动态并行

链接

客户订购了三件物品,您需要为每件物品做好配送准备。您需要检查每件物品的库存情况,收集物品,然后将每件物品打包以便配送。使用 Map 状态,Step Functions 让 Lambda 并行处理客户的每件物品。将客户的所有物品打包好送货后,Step Functions 将进入工作流的下一个步骤,即向客户发送一封包含追踪信息的确认电子邮件。

要查看使用 Map 状态展示动态并行的示例项目,请参阅以下内容:

服务集成

Step Functions 与多种 AWS 服务集成。要将 Step Functions 与这些服务结合使用,请使用以下服务集成模式:

请求响应(默认)
  • 调用服务,并让 Step Functions 在获得 HTTP 响应后进入下一个状态。

运行作业 (.sync)
  • 调用服务,并让 Step Functions 等待作业完成。

等待带有任务令牌的回调 (. waitForTask代币)
  • 使用任务令牌调用服务,并让 Step Functions 等到任务令牌带着回调返回。

下表显示了 Step Functions 的可用服务集成和服务集成模式。

标准工作流程和快速工作流程支持相同的集成,但不支持相同的集成模式

  • 每种集成的优化集成模式支持都不同。

  • Express Workflows 支持 Run a Job (.sync) 或等待回调 (. waitForTask代币)。

  • 有关更多信息,请参阅 标准和快速工作流

Standard Workflows
支持的服务集成
服务 请求响应 运行作业 (.sync) 等待回调 (.waitForTaskToken)
优化集成 Amazon API Gateway
Amazon Athena
AWS Batch
Amazon Bedrock
AWS CodeBuild
Amazon DynamoDB
Amazon ECS/Fargate
Amazon EKS
Amazon EMR
Amazon EMR on EKS
Amazon EMR Serverless
Amazon EventBridge
AWS Glue
AWS Glue DataBrew
AWS Lambda
AWS Elemental MediaConvert
Amazon SageMaker
Amazon SNS
Amazon SQS
AWS Step Functions
AWS 软件开发工具包集成 两百多种
Express Workflows

支持的 区域

大多数 AWS 区域都支持 Step Functions。有关提供 Step Fun AWS ctions 的区域的完整列表,请参阅AWS 区域表

第一次使用 Step Functions?

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