本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
什麼是 Step Functions?
管理狀態和轉換資料
Step Functions 最近新增了變數,並JSONata管理狀態和轉換資料。
了解如何使用變數傳遞資料,以及使用 轉換資料JSONata。
透過 AWS Step Functions,您可以建立工作流程,也稱為 狀態機器,以建置分散式應用程式、自動化程序、協調微服務,以及建立資料和機器學習管道。
Step Functions 是以狀態機器和任務為基礎。在 Step Functions 中,狀態機器稱為工作流程,這是一系列事件驅動的步驟。工作流程中的每個步驟都稱為 狀態。例如,任務狀態代表另一個 AWS 服務執行的工作單位,例如呼叫另一個 AWS 服務 或 API。執行任務之工作流程的執行個體在 Step Functions 中稱為執行。
也可以使用 Step Functions 外部的工作者活動來完成狀態機器任務中的工作。
在 Step Functions 主控台中,您可以視覺化、編輯和偵錯應用程式的工作流程。您可以檢查工作流程中每個步驟的狀態,以確保應用程式依預期順序執行。
根據您的使用案例,您可以讓 Step Functions 呼叫 AWS 服務,例如 Lambda,來執行任務。您可以讓 Step Functions 控制 AWS 服務 AWS Glue,例如建立擷取、轉換和載入工作流程。也可以為需要人為互動的應用程式建立長時間執行的自動化工作流程。
如需 Step Functions 可用 AWS 區域的完整清單,請參閱AWS 區域表
了解如何使用 Step Functions
若要了解如何使用 Step Functions,請遵循 Step Functions 研討會
標準和快速工作流程類型
Step Functions 有兩種工作流程類型:
-
標準工作流程非常適合長時間執行且可稽核的工作流程,因為它們會顯示執行歷史記錄和視覺化偵錯。
標準工作流程具有完全相同的工作流程執行,且最多可以執行一年。這表示標準工作流程中的每個步驟都會完全執行一次。
-
Express 工作流程非常適合 high-event-rate工作負載,例如串流資料處理和 IoT 資料擷取。
Express 工作流程具有at-least-once工作流程執行,最多可執行五分鐘。這表示快速工作流程中的一或多個步驟可能會執行超過一次,而工作流程中的每個步驟至少會執行一次。
標準工作流程 | 快速工作流程 |
---|---|
每秒 2,000 個執行率 | 每秒 100,000 個執行率 |
每秒 4,000 個狀態轉換率 | 幾乎無限制的狀態轉換率 |
依狀態轉換定價 | 依執行次數和持續時間定價 |
顯示執行歷史記錄和視覺化偵錯 | 根據日誌層級顯示執行歷史記錄和視覺化偵錯 |
請參閱 Step Functions 中的執行歷史記錄 |
傳送執行歷史記錄至 CloudWatch |
支援與所有 服務的整合。 支援與某些 服務的最佳化整合。 |
支援與所有 服務的整合。 |
支援所有 服務的請求回應模式 支援在特定服務中執行任務和/或等待回呼模式 (如需詳細資訊,請參閱下一節) |
支援所有 服務的請求回應模式 |
如需 Step Functions 定價和選擇工作流程類型的詳細資訊,請參閱以下內容:
與其他 服務整合
Step Functions 與多個 AWS 服務整合。若要呼叫 AWS 其他服務,您可以使用兩種整合類型:
-
AWS SDK 整合可讓您直接從狀態機器呼叫任何 AWS 服務,讓您存取數千個API動作。
-
最佳化整合提供自訂選項,可在您的狀態機器中使用這些服務。
若要將 Step Functions 與其他 服務結合,有三種服務整合模式:
-
呼叫 服務,並讓 Step Functions 在收到HTTP回應後進入下一個狀態。
-
呼叫 服務,並讓 Step Functions 等待任務完成。
-
使用任務字符 (.waitForTaskToken) 等待回呼
使用任務字符呼叫服務,並讓 Step Functions 等待任務字符傳回回回回呼。
標準工作流程和快速工作流程支援相同的整合,但不支援相同的整合模式。
-
標準工作流程支援請求回應整合。某些服務支援執行任務 (.sync) 或等待回呼 (.waitForTaskToken),在某些情況下則支援兩者。如需詳細資訊,請參閱下列最佳化整合資料表。
-
Express Workflows 僅支援請求回應整合。
若要協助決定這兩種類型,請參閱 在 Step Functions 中選擇工作流程類。
AWS SDK Step Functions 中的 整合
整合服務 | 請求回應 | 執行任務 - .sync | 等待回呼 - .waitForTaskToken |
---|---|---|---|
超過 200 項服務 | 標準 & Express | 不支援 | 標準 |
Step Functions 中的最佳化整合
整合服務 | 請求回應 | 執行任務 - .sync | 等待回呼 - .waitForTaskToken |
---|---|---|---|
Amazon API Gateway | 標準 & Express | 不支援 | 標準 |
Amazon Athena | 標準 & Express | 標準 | 不支援 |
AWS Batch | 標準 & Express | 標準 | 不支援 |
Amazon Bedrock | 標準 & Express | 標準 | 標準 |
AWS CodeBuild | 標準 & Express | 標準 | 不支援 |
Amazon DynamoDB | 標準 & Express | 不支援 | 不支援 |
Amazon ECS/Fargate | 標準 & Express | 標準 | 標準 |
Amazon EKS | 標準 & Express | 標準 | 標準 |
Amazon EMR | 標準 & Express | 標準 | 不支援 |
Amazon EMR on EKS | 標準 & Express | 標準 | 不支援 |
Amazon EMR Serverless | 標準 & Express | 標準 | 不支援 |
Amazon EventBridge | 標準 & Express | 不支援 | 標準 |
AWS Glue | 標準 & Express | 標準 | 不支援 |
AWS Glue DataBrew | 標準 & Express | 標準 | 不支援 |
AWS Lambda | 標準 & Express | 不支援 | 標準 |
AWS Elemental MediaConvert | 標準 & Express | 標準 | 不支援 |
Amazon SageMaker AI | 標準 & Express | 標準 | 不支援 |
Amazon SNS | 標準 & Express | 不支援 | 標準 |
Amazon SQS | 標準 & Express | 不支援 | 標準 |
AWS Step Functions | 標準 & Express | 標準 | 標準 |
工作流程的範例使用案例
Step Functions 會管理應用程式的元件和邏輯,因此您可以撰寫較少的程式碼,並專注於快速建置和更新應用程式。下圖顯示 Step Functions 工作流程的六個使用案例。
-
協調任務 – 您可以建立工作流程,以特定順序協調一系列任務或步驟。例如,任務 A 可能是一個 Lambda 函數,為任務 B 中的另一個 Lambda 函數提供輸入。 工作流程中的最後一個步驟會提供最終結果。
-
根據資料選擇任務 – 您可以使用
Choice
狀態,讓 Step Functions 根據狀態的輸入做出決策。例如,假設客戶請求提高額度限制。如果請求超過您客戶的預先核准額度,您可以讓 Step Functions 將客戶的請求傳送給經理以簽署。如果請求小於您客戶的預先核准額度,您可以讓 Step Functions 自動核准請求。 -
錯誤處理 (
Retry
/Catch
) – 您可以重試失敗的任務,或擷取失敗的任務並自動執行替代步驟。例如,在客戶請求使用者名稱之後,可能是第一次呼叫您的驗證服務會失敗,因此您的工作流程可能會重試請求。當第二個請求成功時,工作流程可以繼續。
或者,也許客戶請求的使用者名稱無效或無法使用,
Catch
陳述式可能會導致 Step Functions 工作流程步驟建議替代的使用者名稱。如需
Retry
和 的範例Catch
,請參閱 處理 Step Functions 工作流程中的錯誤。 -
循環中的人工 – Step Functions 可以在工作流程中包含人工核准步驟。例如,假設銀行客戶嘗試將資金傳送給朋友。使用回呼和任務字符,您可以讓 Step Functions 等待客戶朋友確認轉移,然後 Step Functions 將繼續工作流程,通知銀行客戶轉移已完成。
-
平行步驟處理資料 – 使用
Parallel
狀態,Step Functions 可以平行步驟處理輸入資料。例如,客戶可能需要將影片檔案轉換為數個顯示解析度,所以瀏覽者可以在多個裝置上觀看影片。您的工作流程可以將原始影片檔案傳送到數個 Lambda 函數,或使用最佳化 AWS Elemental MediaConvert 整合,同時將影片處理成多個顯示器解析度。 -
動態處理資料元素 – Step Functions 可以使用
Map
狀態,在資料集的每個項目上執行一組工作流程步驟。反覆運算會平行執行,因此可以快速處理資料集。例如,當您的客戶訂購三十個項目時,您的系統需要套用相同的工作流程,以準備每個項目交付。收集並封裝所有項目以進行交付後,下一個步驟可能是快速將追蹤資訊的確認電子郵件傳送給客戶。如需入門範本的範例,請參閱 使用映射處理資料。