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

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

什么是 Amazon Step Functions?

Step Functions 是一种无服务器的编排服务,可以让你组合Amazon Lambda函数和其他Amazon构建关键业务应用程序的服务。通过 Step Functions 的图形控制台,您可以将应用程序的工作流视为一系列事件驱动的步骤。

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

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

AmazonSDK 和优化的集成

要打电话给其他Amazon服务,您可以使用步骤函数AmazonSDK 集成,或者你可以使用 Step Functions 的优化集成之一。

标准和快速工作流

Step Functions 有两种工作流程类型。标准工作流只能执行一次工作流程,最多可运行一年。快速工作流至少有一次工作流程执行,并且最多可运行五分钟。执行是指您运行工作流程来执行任务的实例。标准工作流非常适合长时间运行、可审计的工作流,因为它们显示执行历史记录和可视调试。Express 工作流是高事件率工作负载的理想选择,例如流数据处理和 IoT 数据摄取。

标准工作流

  • 每秒 2000 个执行率

  • 每秒 4,000 个状态过渡率

  • 按状态转换定价

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

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

快速工作流

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


          Parallelism

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

用例 #6: 动态并行


          链接

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

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

服务集成

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

请求回复(默认)

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

运行作业 (.sync)

  • 调用服务,让 Step Functions 等待作业完成。

等待带有任务令牌 (.wait forToken) 的回调

  • 调用任务令牌调用服务,并让 Step Functions 等待,直到任务令牌与回调一起返回。

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

标准工作流和快速工作流支持相同的集成,但不支持相同的集成模式。快速工作流不支持运行作业 (.sync) 或等待回调 (.waitForTaskToken)。每个集成的优化集成模式支持都不同。有关更多信息,请参阅标准与快速工作流

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

支持的区域

大多数Amazon区域支持 Step Functions。有关的完整列表AmazonStep Functions 可用的区域,请参阅Amazon区域表.

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

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