什麼是 Step Functions? - AWS Step Functions

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

什麼是 Step Functions?

同 AWS Step Functions,您可以建立工作流程 (也稱為狀態機器) 來建置分散式應用程式、自動化程序、協調微服務,以及建立資料和機器學習管道。

Step Functions 是基於狀態機任務。在 Step Functions 中,狀態機器稱為工作流程,這是一系列事件驅動的步驟。工作流程中的每個步驟稱為狀態。例如,「任務」狀態表示另一個工作單位 AWS 服務執行,例如呼叫另一個 AWS 服務 或API。執行工作流程執行工作的執行個體稱為「Step Functions」中的行。

您的狀態機器任務中的工作也可以使用存在活動於 Step Functions 之外的工作者來完成。

Step Functions 工作流程圖的說明性範例。

在 Step Functions 的主控台中,您可以視覺化、編輯和偵錯應用程式的工作流程。您可以檢查工作流程中每個步驟的狀態,以確保應用程式依預期順序執行。

根據您的用例,您可以調用 Step Functions AWS 用於執行任務的服務,例如 Lambda。您可以有 Step Functions 控制 AWS 服務,例如 AWS Glue,以建立擷取、轉換和載入工作流程。也可以為需要人為互動的應用程式建立長時間執行的自動化工作流程。

有關的完整列表 AWS 可使用 Step Functions 的區域,請參閱 AWS 區域表

了解如何使用 Step Functions

若要瞭解如何使用 Step Functions,請遵循 Step Functions 研討會中的互動式模組,或參閱本指南中的入章節。

標準和快速工作流程類型

Step Functions 有兩種工作流程類型:

  • 標準工作流程非常適合長時間執行的可稽核工作流程,因為它們會顯示執行歷程記錄和視覺化偵錯

    標準工作流程只執行一次工作流程,最長可執行。這表示「標準」工作流程中的每個步驟只會執行一次。

  • Express 工作流程非常適合工作 high-event-rate負載,例如串流資料處理和 IoT 資料擷取。

    Express 工作流程具有at-least-once工作流程執行,最多可執行五分鐘。這表示「快速工作流程」中的一或多個步驟可能會執行多次,而工作流程中的每個步驟至少執行一次。

標準工作流 快速工作流
每秒 2,000 次執行速率 每秒 10 萬次執行速率
每秒 4,000 次狀態轉換率 近乎無限制的狀態轉換率
按狀態轉換定價 按執行次數和持續時間定價
顯示執行歷程記錄和視覺偵錯 根據日誌級別顯示執行歷史記錄和可視化調試
請參閱 Step Functions 中的執行歷史

傳送執行歷程記錄至 CloudWatch

Support 與所有服務的集成。

Support 與某些服務的優化集成。

Support 與所有服務的集成。
所有服務的 Support 請求響應模式

Support 在特定服務中運行 Job 和/或等待回調模式(有關詳細信息,請參閱以下部分)

所有服務的 Support 請求響應模式

如需「Step Functions」定價與選擇工作流程型態的詳細資訊,請參閱下列內容:

與其他 服務整合

Step Functions 與多個集成 AWS 服務。若要呼叫其他 AWS 服務,您可以使用兩種整合類型:

  • AWS SDK整合提供了一種呼叫任何人的方式 AWS 直接從您的狀態機進行服務,使您可以訪問數千個API操作。

  • 優化的集成提供了在狀態機器中使用這些服務的自定義選項。

若要將 Step Functions 與其他服務結合,有三種服務整合模式

標準工作流程和 Express 工作流程支援相同的合,但不支援相同的整合模式

  • 標準工作流程支援請求回應整合。某些服務支援執行 Job (.sync) 或等待回呼 (. waitForTask令牌),以及在某些情況下。如需詳細資訊,請參閱下列最佳化整合表。

  • Express 工作流程僅支援「請求回應」整合。

若要協助決定兩種類型,請參閱在 Step Functions 中選擇工作流程類

AWS SDKStep Functions 中的整合

綜合服務 請求回應 執行 Job-.sync 等待回調-。 waitForTask令牌
超過二百項服務 標準 & 快遞 不支援 標準

Step Functions 中的最佳化整合

綜合服務 請求回應 執行 Job-.sync 等待回調-。 waitForTask令牌
Amazon API Gateway 標準 & 快遞 不支援 標準
Amazon Athena 標準 & 快遞 標準 不支援
AWS Batch 標準 & 快遞 標準 不支援
Amazon Bedrock 標準 & 快遞 標準 標準
AWS CodeBuild 標準 & 快遞 標準 不支援
Amazon DynamoDB 標準 & 快遞 不支援 不支援
Amazon ECS/Fargate 標準 & 快遞 標準 標準
Amazon EKS 標準 & 快遞 標準 標準
Amazon EMR 標準 & 快遞 標準 不支援
Amazon EMR on EKS 標準 & 快遞 標準 不支援
Amazon EMR Serverless 標準 & 快遞 標準 不支援
Amazon EventBridge 標準 & 快遞 不支援 標準
AWS Glue 標準 & 快遞 標準 不支援
AWS Glue DataBrew 標準 & 快遞 標準 不支援
AWS Lambda 標準 & 快遞 不支援 標準
AWS Elemental MediaConvert 標準 & 快遞 標準 不支援
Amazon SageMaker 標準 & 快遞 標準 不支援
Amazon SNS 標準 & 快遞 不支援 標準
Amazon SQS 標準 & 快遞 不支援 標準
AWS Step Functions 標準 & 快遞 標準 標準

工作流程的範例使用案例

Step Functions 會管理應用程式的元件和邏輯,因此您可以撰寫較少的程式碼,並專注於快速建置和更新應用程式。下圖展示了 Step Functions 工作流程的六個使用案例。

六個常見工作流程使用案例的視覺化範例,請參閱下列文字。

  1. 協調工作 — 您可以建立工作流程,以特定順序協調一系列工作或步驟。例如,任務 A 可能是 Lambda 函數,它為任務 B 中的另一個 Lambda 函數提供輸入。 工作流程的最後一個步驟會提供最終結果。

  2. 根據資料選擇工作 — 使用Choice狀態,您可以讓「Step Functions 數」根據狀態的輸入做出決策。例如,假設客戶要求提高信用額度。如果請求超過客戶預先核准的信用額度,您可以讓 Step Functions 將客戶的請求傳送給經理以進行登出。如果請求小於客戶預先核准的信用額度,您可以讓「Step Functions」自動核准請求。

  3. 錯誤處理 (Retry/Catch) — 您可以重試失敗的工作,或 catch 取失敗的工作,並自動執行替代步驟。

    例如,在客戶要求使用者名稱之後,第一次呼叫您的驗證服務可能會失敗,因此您的工作流程可能會重試要求。當第二個請求成功時,工作流程可以繼續進行。

    或者,也許客戶要求的使用者名稱無效或無法使用,Catch陳述式可能會導致 Step Functions 工作流程步驟建議替代的使用者名稱。

    如需Retry和的範例Catch,請參閱處理 Step Functions 工作流程中的錯

  4. 循環中的人力-Step Functions 可以在工作流程中包括人工批准步驟。例如,假設一個銀行客戶試圖向朋友發送資金。使用回調和任務令牌,您可以讓 Step Functions 等到客戶朋友確認轉移,然後 Step Functions 將繼續工作流程以通知銀行客戶轉移已完成。

    如需範例,請參閱使用 AmazonSQS,Amazon SNS 和 Lambda 創建回調模式示例

  5. parallel 步驟處理資料 — 使用Parallel狀態,Step Functions 可以 parallel 步驟處理輸入資料。舉例來說,客戶可能需要將影片檔案轉換為多種顯示解析度,以便觀眾可以在多部裝置上觀看影片。您的工作流程可以將原始視訊檔案傳送至多個 Lambda 函數,或使用最佳化的 AWS Elemental MediaConvert 集成以同時將視頻處理為多個顯示分辨率。

  6. 動態處理資料元素 — 使用Map狀態,Step Functions 可以在資料集中的每個項目上執行一組工作流程步驟。迭代並行運行,這使得可以快速處理數據集。例如,當您的客戶訂購 30 件商品時,您的系統需要採用相同的工作流程來準備每個項目以進行交貨。收集完所有物品並打包以供交付後,下一步可能是快速向客戶發送包含跟踪信息的確認電子郵件。

    如需初學者範本範本的範例,請參閱使用地圖處理資料