什么是 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 基于状态机和任务。在 Step Functions 中,工作流被称为状态机,它是一系列事件驱动的步骤。工作流程中的每个步骤都称为状态。任务状态代表其他Amazon服务(例如Amazon Lambda)执行的工作单元。任务状态可以调用任何Amazon Web Service或 API。

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

提示

要通过一系列交互式模块熟悉 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 工作负载,例如流数据处理和物联网数据摄取。

标准工作流程规范

  • 每秒 2,000 执行率

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

  • 按州过渡定价

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

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

快速工作流程规范

  • 每秒 100,000 执行率

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

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

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

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

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

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

使用案例

Step Functions 管理应用程序的组件和逻辑,因此您可以减少编写的代码,专注于快速构建和更新应用程序。本节介绍使用 Step Functions 的典型用例。

用例 #1: 函数编排


          链接

您可以创建一个按特定顺序运行一组 Lambda 函数(步骤)的工作流程。一个 Lambda 函数的输出会传递到下一个 Lambda 函数的输入。工作流程的最后一步给出了结果。使用 Step Functions,您可以看到工作流程中的每个步骤是如何相互交互的,因此您可以确保每个步骤都执行其预期功能。

有关向您展示如何使用一组函数创建状态机的教程,请参阅以下内容:

用例 #2: 分支


          分支

一位客户要求提高信用额度。使用Choice状态,你可以让 Step Functions 根据Choice状态的输入做出决策。如果申请超过客户预先批准的信用额度,您可以让 Step Functions 将客户的请求发送给经理进行签署。如果申请低于客户预先批准的信用额度,则可以让 Step Functions 自动批准该申请。

用例 #3: 错误处理


          Retry/Catch

Retry

在此用例中,客户请求用户名。您的客户的请求第一次失败。使用对Retry账单,你可以让 Step Functions 再次尝试客户的请求。第二次,您的客户的请求成功了。

Catch

在类似的用例中,客户请求的用户名不可用。使用Catch语句,你可以让 Step Functions 建议一个可用的用户名。如果您的客户使用了可用的用户名,则可以让 Step Functions 进入工作流程的下一步,即发送确认电子邮件。如果您的客户没有使用可用的用户名,则可以让 Step Functions 进入工作流程中的另一个步骤,即重新开始注册流程。

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

用例 #4: Human in the Loop


          链接

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

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

用例 #5: 并行处理


          Parallelism

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

用例 #6: 动态并行性


          链接

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

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

服务集成

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

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

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

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

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

标准工作流程和快速工作流支持相同的集成,但不支持相同的集成模式。Express Workflows 不支持 Run a Job (.sync) 或等待回调 (. waitForTask代币)。每种集成的优化集成模式支持都不同。有关更多信息,请参阅标准工作流程与快速工作流程

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

支持的区域

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

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

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