AWS Step Functions 现已全面推出

免费试用 AWS Step Functions

AWS Step Functions 免费套餐包含每月 4000 次状态迁移。 

查看 AWS 免费套餐详细信息 »


问:什么是 AWS Step Functions?

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

AWS Step Functions 会为您管理操作和底层基础设施,以帮助确保您的应用程序在任何规模下均可用。

问:通过用于协调任务的服务编排来设计应用程序有哪些优势?

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

问:使用 AWS Step Functions 可解决哪些使用案例?

AWS Step Functions 可帮助您处理能够细分成一系列步骤的任何计算问题或业务流程。常见使用案例包括:

  • 文档和数据处理 – 将来自多个数据库的数据整合到一份统一的报告中。将大型数据集优化并缩减为有用的格式。
  • DevOps – 构建可实现持续集成和持续部署的工具。构建能够自动响应基础设施中的变更的事件驱动型应用程序。
  • 电子商务 – 自动执行任务关键型业务流程,如订单履行和清单跟踪。
  • Web 应用程序 – 实施可靠的用户注册流程和登录身份验证。

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

借助 AWS Step Functions,您可以将应用程序定义为状态机,状态机是一系列能够共同捕获应用程序行为的步骤。状态机中的状态可能是任务、顺序步骤、并行步骤、分支路径 (选择) 和/或计时器 (等待)。任务就是工作单元,此工作可以由 AWS Lambda 函数、任意类型的 Amazon EC2 实例、容器或本地服务器执行,能够与 Step Functions API 通信的任何内容都会分配到一项任务。可视化控制台能够自动按执行任务的顺序用图表显示每种状态,从而使您能够轻松地设计多步骤应用程序。此控制台可突出显示每个步骤的实时状态,并提供关于每项执行任务的详细历史记录。Step Functions 可为您运行和扩展应用程序和底层计算的步骤,以确保您的应用程序能够根据不断增加的需求可靠地执行任务。

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

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

问:分别应在何时使用 AWS Step Functions 与 AWS Batch

AWS Batch 是一项让您能够在 AWS 云中轻松运行任意规模的批处理计算工作流的服务。当您希望以一系列步骤 (包括顺序步骤、并行步骤和/或分支逻辑 [选择]) 的形式构建分布式应用程序时,则应使用 AWS Step Functions。您可以使用 Batch 来运行应用程序中的任务,并使用 Step Functions 来提交具有相互依赖关系的多项 Batch 任务。在您希望自动管理计算基础设施以根据所需批处理数量进行扩展时,请使用 Batch。

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

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

问:现有的 Amazon Simple Workflow Service (SWF) 会出现什么情况?

AWS 将继续提供 Amazon Simple Workflow (SWF) 并为所有 Amazon SWF 客户提供支持。

问:AWS Step Functions 如何与其他 AWS 服务配合使用?

AWS Step Functions 可与其他多个 AWS 服务配合使用,包括 AWS CloudFormation、AWS Lambda、Amazon EC2、Amazon EC2 Container Service (ECS)、Amazon API Gateway、Amazon CloudWatch、AWS CloudTrail 和 Auto Scaling。

以下示例展示了您可以使用不同 AWS 服务完成的操作:

  • 使用 AWS CloudFormation 启动 AWS Step Functions 状态机和活动所需的多个相关资源。
  • 使用 Lambda 函数或在 EC2 或 ECS 容器中运行的程序执行任务。
  • 将您的 Step Functions API 与 API Gateway API 中的方法相关联。
  • 针对 AWS Step Functions 活动扩展 EC2 任务队列,以响应 CloudWatch 指标。

问:AWS Step Functions 如何与 AWS Lambda 配合使用?

您可以使用 AWS Lambda 函数来执行状态机中的任务。AWS Step Function 可将输入传递给指定的 Lambda 函数,然后等待 Lambda 函数返回结果。借助 Lambda,您可以采用 Lambda 支持的所有语言创建任务,无需预置或管理服务器。要了解有关将 Step Functions 与 Lambda 配合使用的更多信息,请参阅我们的 Step Functions 文档

问:AWS Step Functions 如何与 Amazon EC2 和其他计算资源配合使用?

状态机中的所有工作都是通过任务来完成的。任务可能是一项活动,可包含采用任何语言编写的任何代码。活动可托管在 Amazon EC2、Amazon ECS 和移动设备上。基本上,能够与 AWS Step Functions API 通信的任何计算机都可以托管活动。活动可使用 API 调用对 Step Functions 进行长时间轮询,以请求工作、接收输入数据、完成工作和返回结果。

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

Amazon API Gateway 是一种完全托管的服务,可以帮助开发者轻松创建、发布、维护、监控和保护任意规模的 API。只需在 AWS 管理控制台中点击几下,您便可以将您的 Step Functions API 与 API Gateway API 中的方法相关联,从而当 HTTPS 请求发送至您定义的 API 方法时,API Gateway 便可调用您的 Step Functions API 操作。

您可以使用 Amazon API Gateway API 启动协调分布式后端应用程序的 Step Functions 状态机。您也可以将人工活动任务集成到应用程序的步骤中,如批准请求和响应。您甚至可以对应用程序使用的服务 API 执行无服务器异步调用。

Amazon API Gateway 负责管理所有任务,涉及接受和处理成千上万个并发 API 调用,包括流量管理、授权和访问控制、监控以及 API 版本管理。

问:如何将 AWS Step Functions 与 Amazon CloudWatch 配合使用?

Amazon CloudWatch 是一项监控服务,可监控 AWS 服务以及您在 AWS 上运行的应用程序。Amazon CloudWatch 会收集和追踪指标、设置警报并自动对 AWS Step Functions 中的更改做出反应。

以下示例展示了您可以使用 Amazon CloudWatch 和 AWS Step Functions 执行的一些操作:

  • 监控 Step Functions 工作流指标。
  • 启动 Step Functions 工作流来响应 CloudWatch 事件。
  • 在 Step Functions 超过指标阈值时生成警报。
  • 使用 CloudWatch Events 将 Step Functions 工作流的时间间隔设置为短短一分钟。

问:是否可以将 AWS Step Functions 与本地资源配合使用?

可以。AWS Step Functions 应用程序可以将在数据中心内运行的工作程序和在云中运行的工作程序结合起来。数据中心的工作程序与基于云的工作程序将继续照常运行。


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

要开始使用 AWS Step Functions,请转到 AWS Step Functions 详细信息页面,然后单击“免费试用”按钮。如果没有 Amazon Web Service 账户,系统将会提示您创建一个。注册后,您可以在 AWS Step Functions 控制台中运行示例演练,该演练将引导您完成创建状态机的一系列步骤。从 AWS 管理控制台转到 AWS Step Functions。接下来,选择“Hello World”蓝图,并添加“HelloWorld”Lambda 函数。您现在可以预览并运行您的状态机。要在应用程序中开始使用 AWS Step Functions,请参阅 AWS Step Functions 文档

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

您可以使用任何编程语言来编写活动,只要您能够使用 Web 服务 API 与 AWS Step Functions 通信即可。为方便起见,您可以您选择的语言使用 AWS 开发工具包。AWS Lambda 支持用 Node.js (JavaScript)、Python、Java (兼容 Java 8) 和 C# (使用 .NET Core 运行时) 编写的代码。您可以根据 Amazon States Language 以 JSON 格式定义状态机。


问:如何对用户进行身份验证?

AWS Step Functions 已与 AWS Identity and Access Management (IAM) 集成。IAM 策略可用于控制对 Step Functions API 的访问。


问:AWS Step Functions 如何收费?

使用 AWS Step Functions 时,您只需为从应用程序工作流的一个步骤到下一个步骤的转换 (这被称为状态转换) 支付费用。计费方式是按照状态转化计量的,与各个状态的持续时间 (最多一年) 无关。这使您能够经济高效且轻松地从每天几次执行自动扩展到每月几千万次执行。请参阅 AWS Step Functions 定价页面了解详细信息。