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