概述

问:什么是 AWS Step Functions?

AWS Step Functions 是一项完全托管服务,使您能够轻松地使用可视化工作流来协调分布式应用程序和微服务的组件。通过使用每个都能执行离散函数的单独组件构建应用程序,您可以轻松扩展和快速更改应用程序。Step Functions 是协调组件和逐步设置应用程序函数的可靠方法。Step Functions 提供图形控制台,以按照一系列步骤安排应用程序的组件并实现其可视化。这可以简化多步骤应用程序的构建和运行。Step Functions 可以自动触发和跟踪各个步骤,并在出现错误时重试,因此您的应用程序能够按照预期顺序执行。Step Functions 可记录每个步骤的状态,因此在出现错误时,您能够迅速诊断并调试问题。您甚至无需编写代码就可以更改和添加步骤,因此可以轻松地完善您的应用程序,并加快创新步伐。

问:使用编排设计应用程序的好处是什么?

将一个应用程序分成多个服务组件(或步骤)可确保一个组件出现的故障不会导致整个系统出现中断,每个组件都可以独立地进行扩展,且各组件可轻松更新,而无需在每次更改后都重新部署整个系统。服务组件的协调包括根据应用程序的逻辑流管理执行任务的依赖关系、排程及并发性。在此类应用程序中,开发人员可能使用服务编排来执行此操作和处理故障。

问:常见的 AWS Step Functions 使用案例有哪些?

AWS Step Functions 可帮助您处理能够细分成一系列步骤的任何计算问题或业务流程。它还有助于创建端到端工作流来管理具有相互依赖关系的作业。常见使用案例包括:

  • 数据处理:将来自多个数据库的数据合并为统一的报告,优化并减少大型数据集,使之变成有用的格式,或协调多步骤分析和机器学习工作流
  • 开发运营和 IT 自动化:构建用于持续集成和持续部署的工具,或者创建自动响应基础设施更改的事件驱动型应用程序
  • 电子商务:自动执行任务关键型业务流程,如订单履行和库存跟踪
  • Web 应用程序:实施可靠的用户注册流程和登录身份验证

有关更多详细信息,请查看 AWS Step Functions 使用案例客户评价

问:AWS Step Functions 的工作方式是什么?

通过使用 AWS Step Functions,您可以将描述工作流的状态机定义为一系列步骤及其关系和输入输出。状态机包含许多状态,每个状态代表工作流图中的一个步骤。状态可以执行工作、做出选择、传递参数、发起并行执行、管理超时,或终止成功或失败的工作流。可视化控制台能够自动按执行任务的顺序用图表显示每种状态,从而使您能够轻松地设计多步骤应用程序。控制台会突出显示每个步骤的实时状态,并提供每次执行的详细历史记录。有关更多信息,请参阅“AWS Step Functions 开发人员指南”中的 Step Functions 的工作原理

问:AWS Step Functions 如何连接到我的资源?

您可以使用活动任务和服务任务来配置状态机以执行工作。通过活动任务,您可以将工作流中的特定步骤分配给在其他位置运行的代码(称为活动工作程序)。活动工作程序可以是任何可以建立 HTTP 连接的应用程序,并且可在任何地方托管。例如,活动工作程序可以在 Amazon EC2 实例、移动设备或本地服务器上运行。活动工作程序轮询 Step Functions 以进行工作,从 Step Functions 中获取任何输入,使用您的代码执行工作,并返回结果。由于活动工作程序请求工作,因此很容易使用部署在防火墙后面的工作程序。

服务任务允许您将工作流中的一个步骤连接到受支持的 AWS 服务。Step Functions 将请求推送到其他服务,以便它们可以为您的工作流执行操作,等待服务任务完成,然后继续下一步。

AWS Step Functions 状态机可以包含活动任务和服务任务的组合。AWS Step Functions 应用程序可以将在数据中心内运行的活动工作程序和在云中运行的服务任务结合起来。数据中心的工作程序与基于云的服务任务将继续照常运行。

问:如何开始使用 AWS Step Functions?

您可以通过多种方式开始使用 AWS Step Functions:

问:AWS Step Functions 采用什么语言?

AWS Step Functions 状态机是使用声明性 Amazon States Language 在 JSON 中定义的。要创建活动工作程序,您可以使用任何编程语言,只要您能够使用 Web 服务 API 与 AWS Step Functions 通信即可。为方便起见,您可以您选择的语言使用 AWS 开发工具包。AWS Lambda 支持使用 Node.js (JavaScript)、Python、Golang (Go) 和 C#(使用 .NET Core运行时和其他语言)编写的代码。有关 Lambda 编程模型的更多信息,请参阅 AWS Lambda 开发人员指南。 

比较

问:分别应在何时使用 AWS Step Functions 与Amazon SQS?

当您需要在开发高度可扩展且可审查的应用程序的过程中协调各个服务组件时,则应考虑使用 AWS Step Functions。当您需要可靠、高度可扩展的托管队列在各项服务之间发送、存储和接收消息时,则应考虑使用 Amazon Simple Queue Service (Amazon SQS)。Step Functions 可跟踪应用程序中的所有任务和事件。Amazon SQS 要求您自行实施应用程序级跟踪,特别是在应用程序使用多个队列时。Step Functions 控制台和可见性 API 可提供以应用程序为中心的视图,允许您搜索执行任务、深入查看执行任务的详细信息并管理执行任务。Amazon SQS 要求您自行实施此类额外功能。Step Functions 提供的一些功能可加速应用程序开发,如在各项任务之间传递数据和灵活分配任务。Amazon SQS 要求您自行实施某些应用程序级功能。虽然您可以使用 Amazon SQS 来构建用于协调分布式应用程序的基本工作流,但这对于 Step Functions 而言是一项开箱即用的功能,并且 Step Functions 还能提供其他的应用程序级功能。

问:分别应在何时使用 AWS Step Functions 与Amazon Simple Workflow Service (SWF)?

您应该考虑针对所有新应用程序使用 AWS Step Functions,因为它可以提供更富有成效且灵活的方法,以便您使用可视化工作流协调应用程序组件。如果您需要外部信号来干预流程或希望启动能够向父流程返回结果的子流程,则应考虑使用 Amazon Simple Workflow Service (Amazon SWF)。借助 Amazon SWF,您可以编写决策程序以将活动步骤与决策步骤分开,而不是采用描述性 JSON 的格式编写状态机。这使您可以完全控制您的编排逻辑,但也会增加开发应用程序的复杂程度。您可以使用自己选择的编程语言编写决策程序,也可以使用 Flow Framework,以便使用为您构建异步交互的编程结构。 

集成

问:AWS Step Functions 如何连接和协调其他 AWS 服务?

使用 AWS Step Functions 创建的工作流可以使用服务任务连接和协调其他 AWS 服务。例如,您可以:

  • 调用 AWS Lambda 函数
  • 运行 Amazon Elastic Container Service 或 AWS Fargate 任务
  • 从 Amazon DynamoDB 表中获取现有项目或将新项目放入 DynamoDB 表中
  • 提交 AWS Batch 作业并等待其完成
  • 将消息发布到 Amazon SNS 主题
  • 将消息发送到 Amazon SQS 队列
  • 启动 AWS Glue 作业运行
  • 创建 Amazon SageMaker 作业以训练机器学习模型或批量转换数据集

要了解有关使用 Step Functions 连接到其他 AWS 服务的更多信息,请参阅“Step Functions 开发人员指南”。您还可以在运行应用程序的状态机中创建任务,请参阅概览部分中的常见问题 AWS Step Functions 如何连接到我的资源?

问:AWS Step Functions 如何与 Amazon API Gateway 配合使用?

您可以将 Step Functions API 与 Amazon API Gateway 关联,以便在将 HTTPS 请求发送到您定义的 API 方法时,这些 API 会调用您的状态机。您可以使用 Amazon API Gateway API 启动 Step Functions 状态机,该状态机可以协调分布式后端应用程序的组件。然后,您将人员活动任务集成到应用程序的各个步骤中,例如审批请求和响应。您也可以对应用程序使用的服务 API 执行无服务器异步调用。有关更多信息,请试看我们的教程使用 API Gateway 创建 Step Functions API。 

问:如何在 AWS Step Functions 中使用日志记录和监控?

AWS Step Functions 将指标发送到 Amazon CloudWatch 和 AWS CloudTrail,以监控应用程序。Amazon CloudWatch 会收集和跟踪指标、设置警报并自动对 AWS Step Functions 中的更改做出反应。AWS CloudTrail 会将对 Step Functions 进行的所有 API 调用捕获为事件,包括从 Step Functions 控制台进行的调用,以及包括从代码调用到 Step Functions API 调用在内的所有调用。Step Functions 还支持工作流中每项集成服务的 Amazon CloudWatch Events 托管规则,并将根据需要在您的 AWS 账户中创建和管理 CloudWatch Events 规则。有关更多信息,请参阅“AWS Step Functions 开发人员指南”中的监控和日志记录。 

安全性

问:如何保护我的工作流?

AWS Step Functions 已与 AWS Identity and Access Management (AWS IAM) 集成。IAM 策略可以用于控制对 Step Functions API 的访问,当您在 AWS Step Functions 控制台中创建状态机时,Step Functions 将根据状态机定义中使用的资源推荐 IAM 策略。有关更多信息,请参阅“AWS Step Functions 开发人员指南”中的适用于关联服务的 IAM 策略。 

AWS Step Functions 入门

访问入门页面
准备好开始使用了吗?
登录到 AWS Step Functions 控制台
还有更多问题?
联系我们