

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 在 Step Functions 中選擇工作流程類型
<a name="choosing-workflow-type"></a>

建立狀態機器時，您必須選擇*標準* (預設) 或*快速***類型**，通常稱為標準工作流程或快速工作流程。

您可以使用 定義兩種狀態機器類型[使用 Amazon States Language 定義 Step Functions 工作流程](concepts-amazon-states-language.md)。

標準和快速工作流程都可以開始回應事件，例如來自 Amazon API Gateway 的 HTTP 請求、IoT 規則，以及 Amazon EventBridge 中超過 140 個其他事件來源。

**工作流程類型不可變**  
在您建立狀態機器之後，**無法**更新工作流程類型。

**標準工作流程**非常適合長時間執行 （長達一年）、耐用且可稽核的工作流程。您可以在執行完成後，使用 [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 Logs 中檢查它們。<br />如需在主控台中偵錯標準工作流程執行的詳細資訊，請參閱 [標準和快速主控台體驗差異](concepts-view-execution-details.md#console-exp-differences)和 [檢視工作流程執行](concepts-view-execution-details.md)。 | 無限制的執行歷史記錄，也就是說，您可以在 5 分鐘內產生任意數量的執行歷史記錄項目。<br />可以在 CloudWatch Logs 或 Step Functions 主控台中檢查執行，方法是在您的狀態機器上啟用記錄。<br />如需在主控台中偵錯快速工作流程執行的詳細資訊，請參閱 [標準和快速主控台體驗差異](concepts-view-execution-details.md#console-exp-differences)和 [檢視工作流程執行](concepts-view-execution-details.md)。 | 
| [執行語義](#express-at-least-once-execution) | Exactly-once 工作流程執行。 | *非同步快速工作流程*：*At-least-once*工作流程執行。<br />*同步快速工作流程*：*At-most-once*工作流程執行。 | 
| [服務整合](integrate-services.md) | 支援所有服務整合與模式。 | 支援所有服務整合。快速工作流程不支援任務執行 (`.sync`) 或回呼 (`.waitForTaskToken`) 服務整合模式。 | 
| [分散式映射](state-map-distributed.md) | 支援 | 不支援 | 
| [活動](concepts-activities.md) | 支援 | 不支援 | 

**最佳化工作流程類型**  
如需比較和範例成本影響分析，請參閱使用 Step Functions 進行大規模資料處理研討會中的[選擇工作流程類型](https://catalog.workshops.aws/serverless-data-processing/advanced/optimization/workflow-type)。

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

您可以選擇兩種類型的快速工作流程：非同步快速工作流程和同步快速工作流程。
+  **非同步快速工作流程**會傳回工作流程已啟動的確認，但不要等待工作流程完成。若要取得結果，您必須輪詢服務的 [CloudWatch Logs](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 Express Workflows，`StartSyncExecution`請求會在 60 秒後過期。若要同步執行快速工作流程長達五分鐘，請使用 AWS SDK 或 AWS Command Line Interface (AWS CLI) 而非 Step Functions 主控台提出`StartSyncExecution`請求。

  同步 Express 執行 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執行資料後，可以重複使用工作流程名稱。<br />若要符合合規、組織或法規要求，您可以透過傳送配額請求，將執行歷史記錄保留期間縮短為 30 天。若要這樣做，請使用 AWS Support Center Console 並建立新案例。 | Step Functions 不會擷取執行歷史記錄。必須透過 Amazon CloudWatch Logs 啟用記錄。 | Step Functions 不會擷取執行歷史記錄。必須透過 Amazon CloudWatch Logs 啟用記錄。 | 