跳至主要内容

Amazon Step Functions

Amazon Step Functions 常见问题

概述

全部打开

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

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

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

  • 数据处理:将来自多个数据库的数据整合到统一报告中,优化大型数据集并将其缩减成有用格式的数据,或者协调多步骤分析和机器学习工作流

  • DevOps 和 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 States Language 以 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 Web Services 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 Identity and Access Management(Amazon IAM)集成。您可以使用 IAM 策略控制对 Step Functions API 的访问。在 Amazon Step Functions 控制台中创建状态机时,Step Functions 会根据状态机定义中使用的资源为您推荐 IAM 策略。有关更多信息,请参阅 Amazon Step Functions 开发人员指南中的用于所连接服务的 IAM 策略

Step Functions 还使用 Amazon PrivateLink 支持 VPC 端点(VPCE)。您可以从 VPC 支持的 Amazon Lambda 函数和其他亚马逊云科技服务中访问 Step Functions,无需通过公有互联网。有关更多信息,请参阅 Amazon Step Functions 开发人员指南中的适用于 Amazon Step Functions 的 Amazon Virtual Private Cloud 端点

开始使用 Amazon Step Functions

访问入门页面

准备好开始使用了吗?

登录 Amazon Step Functions 控制台

还有其他问题?

联系我们