本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
在 Step Functions 中选择工作流程类型
创建状态机时,您必须选择标准或快速类型。状态机的默认类型为标准。类型为标准的状态机称为标准工作流,类型为快速的状态机被称为快速工作流。
对于标准工作流和快速工作流,您都可以使用 使用 Amazon States Language 定义 Step Functions 工作流程 来定义状态机。根据您选择的类型,状态机的执行行为会有所不同。
重要
创建状态机后,无法更改您选择的工作流程类型。
标准和快速工作流可以自动启动以响应事件,例如来自 Amazon API Gateway 进行的 HTTP 请求(大规模完全托管的 API)、IoT 规则以及 Amazon EventBridge 中超过 140 个事件源。
标准工作流程非常适合长时间运行(最长一年)、持久且可审计的工作流程。在执行完成后,您可以使用 Step Functions API 检索 90 天内的完整执行历史记录。标准工作流遵循仅一次 模型,在这种模型中,除非您在 ASL 中指定了 Retry
行为,否则任务和状态的运行次数永远不会超过一次。这使得标准工作流适合于编排非幂等操作,例如启动 Amazon EMR 集群或处理付款。标准工作流执行将根据处理的状态转换次数计费。
快速工作流程适用于大批量事件处理工作负载,例如 IoT 数据摄取、流数据处理和转换以及移动应用程序后端。它们最多可以运行五分钟。快速工作流采用至少一次 模型,在这种模式下,一次执行可能会运行多次。这使得快速工作流非常适合编排幂等操作,例如转换输入数据和通过 PUT 操作存储到 Amazon DynamoDB 中。快速工作流程的执行按执行次数、执行的总持续时间和运行执行时消耗的内存计费。
提示
要部署示例快速工作流程,请参阅《Amazon Step Functions 讲习会》中的 Parallel 状态
标准和快速工作流程类型的比较
类型/类别 | 标准工作流 | 快速工作流程:同步和异步 |
---|---|---|
最长持续时间 | 一年 | 五分钟 |
支持的执行启动率 |
有关与支持的执行启动率相关的配额信息,请参阅与API操作限制相关的配额。 |
有关与支持的执行启动率相关的配额信息,请参阅与API操作限制相关的配额。 |
支持的状态转换速率 |
有关与支持的状态转换速率相关的配额信息,请参阅与状态限制相关的配额。 |
无限制 |
定价 |
按状态转换次数定价。每完成一个执行步骤,就会计算一次状态转换。 | 按运行的执行次数、执行时长和内存消耗量来定价。 |
执行历史记录 |
可以使用 Step Functions API 列出和描述执行情况。您可通过控制台对执行进行可视化调试。您也可以通过在状态机上启用日志能在 CloudWatch Logs 中检查执行情况。 有关在控制台中调试标准工作流执行的更多信息,请参阅标准和快速控制台体验的差别和查看工作流程运行。 |
无限制的执行历史记录,即在 5 分钟内生成多少条执行历史记录,就会保留多少条执行历史记录。 通过在状态机上启用日志记录功,可在 CloudWatch Logs 或 Step Functions 控制台中检查执行情况。 有关在控制台中调试快速工作流执行的更多信息,请参阅标准和快速控制台体验的差别和查看工作流程运行。 |
执行语义 | 仅一次 工作流执行。 | 异步快速工作流:至少一次 工作流执行。 同步快速工作流程:至多一次 工作流执行。 |
服务集成 | 支持所有服务集成和模式。 | 支持所有服务集成。注意快速工作流不支持任务运行 ( |
分布式 Map | 支持 | 不支持 |
活动 | 支持 | 不支持 |
优化工作流程类型
在大规模数据处理讲习会中,请参阅 Choosing workflow type (workshop)
Step Functions 中的同步和异步快速工作流程
您可以选择两种类型的快速工作流:异步快速工作流和同步快速工作流。
-
异步快速工作流会返回工作流已启动的确认信息,但不会等待工作流完成。要获得结果,您必须轮询该服务的 CloudWatch Logs。如果您不需要即时响应输出,例如其他服务不依赖的消息服务或数据处理,则可以使用异步快速工作流。您可以通过 Step Functions 中的嵌套工作流或使用
StartExecution
API 调用来启动异步快速工作流,响应事件。 -
同步快速工作流会启动一个工作流,等待工作流完成,然后返回结果。同步快速工作流可用于编排微服务。使用同步快速工作流,您可以开发应用程序,而无需开发额外的代码来处理错误、重试或运行并行任务。您可以运行从 Amazon API Gateway 或 Amazon Lambda 调用的同步快速工作流,也可以使用
StartSyncExecution
API 调用来运行同步快速工作流。注意
如果您从控制台同步运行 Step Functions 快速工作流程,则
StartSyncExecution
请求在 60 秒后到期。若要同步运行长达五分钟的快速工作流,请不要使用 Step Functions 控制台,而要使用 Amazon 开发工具包或 Amazon Command Line Interface (Amazon CLI) 发出StartSyncExecution
请求。同步快速执行 API 调用不会影响现有的账户容量限制。Step Functions 按需提供容量,并根据持续的工作负载自动扩展。在容量扩展之前,可以限制工作负载激增。
Step Functions 工作流程中的执行保障
标准工作流 | 异步快速工作流 | 同步快速工作流 |
---|---|---|
仅一次 工作流执行 | 至少一次 工作流执行 | 至多一次 工作流执行 |
在状态转换之间,执行状态在内部保持不变。 | 在状态转换之间,执行状态不会持续存在。 | 在状态转换之间,执行状态不会持续存在。 |
在启动与当前运行的工作流同名的执行时,自动返回幂等响应。当前运行的工作流完成后,新工作流不会启动,并且会引发异常。 | 不会自动管理幂等性。启动多个同名工作流会导致并发执行。如果状态机逻辑不幂等,则可能导致内部工作流状态丢失。 | 不会自动管理幂等性。Step Functions 会在执行开始后等待,并在执行完成时返回状态机的结果。如果发生异常,工作流不会重新启动。 |
执行历史数据会在 90 天后删除。删除过时的执行数据后,可以重复使用工作流名称。 为了满足合规性、组织或监管要求,您可以通过发送配额请求,将执行历史记录的保留期缩短至 30 天。为实现该操作,请使用 Amazon Support Center Console并创建一个新案例。 |
Step Functions 不会捕获执行历史记录。必须通过 Amazon CloudWatch Logs 启用日志记录。 | Step Functions 不会捕获执行历史记录。必须通过 Amazon CloudWatch Logs 启用日志记录。 |