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

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

什么是 Amazon Step Functions?

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

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

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

AmazonSDK 和优化集成

打电话给其他人Amazon服务,你可以使用 Step Functions 'AmazonSDK 集成,或者你可以使用 Step Functions 的优化集成之一。

  • 这些区域有:AmazonSDK 集成让你给两百多人中的任何一个打电话Amazon直接来自状态机的服务,使您可以访问九千多个 API 操作。

  • 分步函数的优化集成已进行自定义,以简化状态机中的使用。

标准和快速工作流程

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

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

标准工作流

  • 每秒 2000 个

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

  • 每状态过渡定价

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

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

快速处理工作流程

  • 每秒 100000 个

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

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

  • 将执行历史发送到亚马逊 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 parallel 处理客户的每个项目。一旦客户的所有物品都打包好交付后,Step Functions 将进入工作流程的下一步,即向客户发送一封包含跟踪信息的确认电子邮件。

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

服务集成

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

请求响应(默认)

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

运行作业 (.sync)

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

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

  • 使用任务令牌调用服务,让 Step Functions 等到任务令牌通过回调返回。

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

标准工作流程和快速工作流程支持相同的集成,但不支持相同的集成模式。Express Workflows 不支持运行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
CodeBuild
Athena
Amazon EKS
API Gateway
Amazon Glue DataBrew
亚马逊 EventBridge
Amazon Step Functions
AmazonSDK 集成 超过两百个
Express Workflows

支持的区域

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

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

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