本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
在 Step Functions 中選擇工作流程類型
建立狀態機器時,您必須選擇標準 (預設) 或快速類型,通常稱為標準工作流程或快速工作流程。
您可以使用 定義兩種狀態機器類型使用 Amazon States Language 定義 Step Functions 工作流程。
標準和快速工作流程都可以開始回應事件,例如來自 Amazon API Gateway 的 HTTP 請求、IoT 規則,以及 Amazon EventBridge 中超過 140 個其他事件來源。
工作流程類型不可變
在您建立狀態機器後,無法更新工作流程類型。
標準工作流程非常適合長時間執行 (長達一年)、耐用且可稽核的工作流程。您可以在執行完成後,使用 Step Functions API 擷取完整執行歷史記錄長達 90 天。
標準工作流程遵循 exactly-once模型,其中您的任務和狀態絕不會執行超過一次,除非您已在 ASL 中指定Retry行為。此exactly-once模型使標準工作流程適合協調非等冪動作,例如啟動 Amazon EMR 叢集或處理付款。
標準工作流程執行會根據處理的狀態轉換次數計費。
Express Workflows 非常適合大量事件處理工作負載,例如 IoT 資料擷取、串流資料處理和轉換,以及行動應用程式後端。這種工作流程最長可執行五分鐘。
快速工作流程使用 at-least-once模型,因此執行可能會執行多次。此at-least-once模型使快速工作流程更適合協調等冪動作,例如使用 PUT 動作轉換輸入資料以存放在 Amazon DynamoDB 中。
快速工作流程執行會依執行次數、執行總持續時間和執行期間耗用的記憶體計費。
提示
若要部署範例 Express 工作流程,請參閱AWS Step Functions研討會中的平行處理資料
標準和快速工作流程類型的比較
| 類型/類別 | 標準工作流程 | 快速工作流程:同步和非同步 |
|---|---|---|
| 最長持續時間 | 一年 | 五分鐘 |
| 支援的執行啟動速率 |
如需與支援的執行啟動率相關的配額資訊,請參閱 與 API 動作限流相關的配額。 |
如需與支援的執行啟動率相關的配額資訊,請參閱 與 API 動作限流相關的配額。 |
| 支援的狀態轉換速率 |
如需支援狀態轉換率相關配額的資訊,請參閱 與狀態調節相關的配額。 |
沒有限制 |
| 定價 |
依狀態轉換次數定價。每次執行中的步驟完成時,都會計算狀態轉換。 | 依您執行的執行次數、其持續時間和記憶體用量來計費。 |
| 執行歷史記錄 |
您可以使用 Step Functions APIs列出和描述執行。可透過主控台以視覺化方式偵錯執行。您也可以在狀態機器上啟用記錄,在 CloudWatch Logs 中檢查它們。 如需在主控台中偵錯標準工作流程執行的詳細資訊,請參閱 標準和快速主控台體驗差異和 檢視工作流程執行。 |
無限制的執行歷史記錄,也就是說,您可以在 5 分鐘內產生任意數量的執行歷史記錄項目。 您可以在 CloudWatch Logs 或 Step Functions 主控台中檢查執行,方法是在您的狀態機器上啟用記錄。 如需在主控台中偵錯快速工作流程執行的詳細資訊,請參閱 標準和快速主控台體驗差異和 檢視工作流程執行。 |
| 執行語義 | Exactly-once 工作流程執行。 | 非同步快速工作流程:At-least-once工作流程執行。 同步快速工作流程:At-most-once工作流程執行。 |
| 服務整合 | 支援所有服務整合與模式。 | 支援所有服務整合。注意快速工作流程不支援任務執行 ( |
| 分散式映射 | 支援 | 不支援 |
| 活動 | 支援 | 不支援 |
最佳化工作流程類型
如需比較和範例成本影響分析,請參閱使用 Step Functions 進行大規模資料處理研討會中的選擇工作流程類型
Step Functions 中的同步和非同步快速工作流程
您可以選擇兩種類型的快速工作流程:非同步快速工作流程和同步快速工作流程。
-
非同步快速工作流程會傳回工作流程已啟動的確認,但不要等待工作流程完成。若要取得結果,您必須輪詢服務的 CloudWatch Logs。當您不需要立即回應輸出時,您可以使用非同步快速工作流程,例如傳訊服務或其他服務不依賴的資料處理。您可以啟動非同步快速工作流程以回應事件、透過 Step Functions 中的巢狀工作流程或使用
StartExecutionAPI 呼叫。 -
同步快速工作流程會啟動工作流程,等待工作流程完成,然後傳回結果。同步快速工作流程可用來協調微服務。使用同步快速工作流程,您可以開發應用程式,而不需要開發額外的程式碼來處理錯誤、重試或執行平行任務。您可以執行從 Amazon API Gateway 叫用的同步快速工作流程AWS Lambda,或使用
StartSyncExecutionAPI 呼叫。注意
如果您從主控台同步執行 Step Functions Express Workflows,
StartSyncExecution請求會在 60 秒後過期。若要同步執行快速工作流程長達五分鐘,請使用 AWSSDK 或AWS Command Line Interface (AWS CLI) 而非 Step Functions 主控台提出StartSyncExecution請求。同步 Express 執行 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 Logs 啟用記錄。 | Step Functions 不會擷取執行歷史記錄。必須透過 Amazon CloudWatch Logs 啟用記錄。 |