

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 在 Step Functions 中选择工作流程类型
<a name="choosing-workflow-type"></a>

创建状态机时，必须将**类型**选择为*标准*（默认）或*快速*，通常称为标准工作流程或快速工作流程。

使用 [使用 Amazon States Language 定义 Step Functions 工作流程](concepts-amazon-states-language.md) 定义状态机类型。

标准和快速工作流程都可以从响应事件开始，例如来自 Amazon API Gateway 的 HTTP 请求、物联网规则以及亚马逊中 140 多个其他 140 多个事件源 EventBridge。

**工作流类型是不可变的**  
创建状态机后，**无法**更新工作流类型。

**标准工作流程**非常适合长时间运行（最长一年）、持久且可审计的工作流程。在执行完成后，您可以使用 [Step Functions API](https://docs.aws.amazon.com/step-functions/latest/apireference) 检索 90 天内的完整执行历史记录。

 标准工作流遵循 *exactly-once* 模型，在这种模型中，除非您在 ASL 中指定了 `Retry` 行为，否则任务和状态的运行次数永远不会超过一次。exactly-once 模型使得标准工作流适合于编排**非幂等**操作，例如启动 Amazon EMR 集群或处理付款。

标准工作流执行将根据处理的状态转换次数计费。

**快速工作流程**适用于大批量事件处理工作负载，例如 IoT 数据摄取、流数据处理和转换以及移动应用程序后端。它们最多可以运行五分钟。

快速工作流使用 *at-least-once* 模型，在这种模型中，一次执行可能会运行多次。at-least-once 模型使得快速工作流更适合编排**幂等**操作，例如使用 PUT 操作转换输入数据以存储在 Amazon DynamoDB 中。

快速工作流的执行按执行次数、执行的总持续时间和执行期间消耗的内存来计费。

**提示**  
要部署示例 Express 工作流程，请参阅* AWS Step Functions 研讨会*[中的并行处理数据](https://catalog.workshops.aws/stepfunctions/parallel-state)。

**标准和快速工作流程类型的比较**


| 类型/类别 | 标准工作流 | 快速工作流程：同步和异步 | 
| --- | --- | --- | 
| 最长持续时间 | 一年 | 五分钟 | 
| 支持的执行启动率 |  有关与支持的执行启动率相关的配额信息，请参阅[与 API 操作限制相关的配额](service-quotas.md#service-limits-api-action-throttling-general)。 |  有关与支持的执行启动率相关的配额信息，请参阅[与 API 操作限制相关的配额](service-quotas.md#service-limits-api-action-throttling-general)。 | 
| 支持的状态转换速率 |  有关与支持的状态转换速率相关的配额信息，请参阅[与状态限制相关的配额](service-quotas.md#service-limits-api-state-throttling)。 | 无限制 | 
| [定价](https://aws.amazon.com/step-functions/pricing) | 按状态转换次数定价。每完成一个执行步骤，就会计算一次状态转换。 | 按运行的执行次数、执行时长和内存消耗量来定价。 | 
| 执行历史记录 |  可以使用 Step Functions 列出和描述执行情况 APIs。您可通过控制台对执行进行可视化调试。也可以通过在状态机上启用 CloudWatch 日志记录功能在日志中对其进行检查。 有关在控制台中调试标准工作流执行的更多信息，请参阅[标准和快速控制台体验的差别](concepts-view-execution-details.md#console-exp-differences)和[查看工作流程运行](concepts-view-execution-details.md)。  | 无限制的执行历史记录，即在 5 分钟内生成多少条执行历史记录，就会保留多少条执行历史记录。 通过在状态机上启用日志记录，可以在 CloudWatch 日志或 Step Functions 控制台中检查执行情况。 有关在控制台中调试快速工作流执行的更多信息，请参阅[标准和快速控制台体验的差别](concepts-view-execution-details.md#console-exp-differences)和[查看工作流程运行](concepts-view-execution-details.md)。  | 
| [执行语义](#express-at-least-once-execution) | Exactly-once 工作流执行。 | *异步快速工作流*：*At-least-once* 工作流执行。 *同步快速工作流*：*At-most-once* 工作流执行。 | 
| [服务集成](integrate-services.md) | 支持所有服务集成和模式。 | 支持所有服务集成。快速工作流不支持任务运行 (`.sync`) 或 回调 (`.waitForTaskToken`) 服务集成模式。 | 
| [分布式 Map](state-map-distributed.md) | 支持 | 不支持 | 
| [活动](concepts-activities.md) | 支持 | 不支持 | 

**优化工作流程类型**  
有关比较和示例成本影响分析，请参阅《Large-scale data processing with Step Functions》讲习会中的 [Choosing the workflow type](https://catalog.workshops.aws/serverless-data-processing/advanced/optimization/workflow-type)。

## Step Functions 中的同步和异步快速工作流程
<a name="concepts-express-synchronous"></a>

您可以选择两种类型的快速工作流：异步快速工作流和同步快速工作流。
+  **异步快速工作流**会返回工作流已启动的确认信息，但不会等待工作流完成。要获得结果，您必须轮询服务的日[CloudWatch 志](cw-logs.md)。如果您不需要即时响应输出，例如其他服务不依赖的消息服务或数据处理，则可以使用异步快速工作流。您可以通过 Step Functions 中的嵌套工作流或使用 `[StartExecution](https://docs.aws.amazon.com/step-functions/latest/apireference/API_StartExecution.html)` API 调用来启动异步快速工作流，响应事件。
+  **同步快速工作流**会启动一个工作流，等待工作流完成，然后返回结果。同步快速工作流可用于编排微服务。使用同步快速工作流，您可以开发应用程序，而无需开发额外的代码来处理错误、重试或运行并行任务。您可以运行从 Amazon API Gateway 调用的同步快速工作流程 AWS Lambda，也可以使用 `[StartSyncExecution](https://docs.aws.amazon.com/step-functions/latest/apireference/API_StartSyncExecution.html)` API 调用。
**注意**  
如果您从控制台同步运行 Step Functions 快速工作流程，则 `StartSyncExecution` 请求在 60 秒后到期。要同步运行 Express 工作流程长达五分钟，请使用 AWS SDK 或 AWS Command Line Interface (AWS CLI) 而不是 Step Functions 控制台`StartSyncExecution`发出请求。

  同步快速执行 API 调用不会影响现有的账户容量限制。Step Functions 按需提供容量，并根据持续的工作负载自动扩展。在容量扩展之前，可以限制工作负载激增。

## Step Functions 工作流程中的执行保障
<a name="express-at-least-once-execution"></a>


|  标准工作流  |  异步快速工作流  |  同步快速工作流  | 
| --- | --- | --- | 
| 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 日志启用日志功能。 | 