什么是 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 基于状态机和任务。状态机是一个工作流。任务是工作流中的状态,它代表一个工作单元,而另一个工作单元Amazon服务执行。工作流中的每个步骤都是一种状态。

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

标准和快速工作流

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

标准工作流

  • 每秒 2,000 个

  • 每秒 4000 个状态过渡率

  • 按州转换定价

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

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

快速工作流

  • 每秒 100,000 个

  • 几乎无限的状态转换速率

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

  • 将执行历史记录发送到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状态,请参阅以下内容:

Service (服务) 集成

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

请求响应(默认值)

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

运行作业 (.sync)

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

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

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

下表显示了 Step Functions 的所有受支持的服务集成和服务集成模式。

Standard Workflows
支持的服务集成
服务 请求响应 运行 Job (.sync) 等待回调 (.waitForTaskToken)
Lambda
Amazon Batch
DynamoDB
Amazon ECS/Amazon Fargate
Amazon SNS
Amazon SQS
Amazon Glue
SageMaker
Amazon EMR
Amazon EMR
CodeBuild
Athena
Amazon EKS
API Gateway
Amazon Glue DataBrew
Amazon EventBridge
Amazon Step Functions
Express Workflows

支持的区域

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

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

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