概览

  • Amazon Step Functions 是一种完全托管的服务,让您可以更轻松地使用可视化工作流协调分布式系统和微服务的组件。您可以从每个执行离散函数的单独组件构建应用程序,从而轻松扩展并快速更改应用程序。Step Functions 非常可靠,用于协调组件和逐步完成应用程序的功能。Step Functions 提供了一个图形化控制台,可将应用程序的组件安排并可视化为一系列步骤。这使得您可以轻松构建和运行多步骤应用程序。Step Functions 会自动触发和跟踪每个步骤,并在出现错误时重试,因此应用程序会按顺序正常执行。Step Functions 会记录每个步骤的状态,因此当出现问题时,您可以快速诊断和调试问题。您甚至不需要编写代码就可以更改和添加步骤,因此您可以轻松地改进应用程序并更快地进行创新。

  • 将应用程序分解为服务组件(或步骤)可以确保一个组件发生故障不会导致整个系统崩溃,每个组件可以独立扩展,并且可以更新组件,而不需要在每次更改之后重新部署整个系统。服务组件的协调涉及根据应用程序的逻辑流管理执行依赖关系、调度和并发性。在此类应用程序中,开发人员可以使用服务编排来完成这项工作并处理故障。

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

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

    有关更多详细信息,请查看 Amazon Step Functions 使用案例

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

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

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

    Amazon Step Functions 状态机可以包含活动任务与服务任务的组合。Amazon Step Functions 应用程序也可以将数据中心内运行的活动工作程序与云中运行的服务任务结合到一起。数据中心内的工作程序会与云中的任何服务任务一起继续正常运行。

  • 使用 Amazon Step Functions 的方法有很多。

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

比较

  • 如果您在开发高度可靠并且可审核的应用程序时需要协调服务组件,则应该考虑使用 Amazon 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 内置这一功能和一些应用程序层面的其他功能。

  • 对于所有新应用程序,您应该考虑使用 Amazon Step Functions,因为它可以利用可视化工作流提供一种更有效、更敏捷的方式来协调应用程序组件。如果您需要外部信号介入您的流程,或者想要启动将结果返回父流程的子流程,则应该考虑使用 Amazon Simple Workflow Service (Amazon SWF)。利用 Amazon SWF,您可以编写一个决策程序将活动步骤与决策步骤分离,而不编写声明性 JSON 格式的状态机。这可以让您完全控制编排逻辑,但会提高应用程序开发的复杂性。您可以用自己选择的编程语言编写决策应用程序,也可以通过 Flow Framework 来使用构造异步交互的编程结构。

集成

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

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

    要了解有关使用 Step Functions 来连接其他 服务服务的详细信息,请参阅 Amazon Step Functions 开发人员指南。您也可以在运行应用程序的状态机中创建任务,详见概览部分的常见问题:Amazon Step Functions 怎样连接到我的资源?

  • 您可以将 Step Functions API 与 Amazon API Gateway 关联,这样,当 HTTPS 请求被发送到您定义的 API 方法时,这些 API 就会调用您的状态机。您可以使用 Amazon API Gateway API 来启动可以协调分布式后端应用程序组件的 Step Functions 状态机,并将人工活动任务集成到审批请求和响应等应用程序步骤中。您还可以对应用程序使用的服务 API 进行无服务器异步调用。有关更多信息,请查看我们的教程:使用 API Gateway 创建 Step Functions API

  • Amazon Step Functions 可以将各种指标发送到 Amazon CloudWatch 和 Amazon CloudTrail,用于应用程序监控。Amazon CloudWatch 可以收集和跟踪指标、设置警报并自动响应 Amazon Step Functions 中的更改。Amazon CloudTrail 可以将对 Step Functions 的所有 API 调用记录为事件,包括来自 Step Functions 控制台的调用和对 Step Functions API 的代码调用。对于您的工作流中整合的各项服务,Step Functions 还支持 Amazon CloudWatch Events 托管规则,并会根据需要在您的 服务账户中创建和管理 CloudWatch Events 规则。有关更多信息,请参阅 Amazon Step Functions 开发人员指南中的监控与日志记录

安全性

开始使用 Amazon Step Functions

访问入门页面
准备好开始使用了吗?
登录 Amazon Step Functions 控制台
还有其他问题?
联系我们
关闭
1010 0766
由光环新网运营的
北京区域
1010 0966
由西云数据运营的
宁夏区域
关闭
由光环新网运营的
北京区域
由西云数据运营的
宁夏区域