什麼是 AWS Step Functions? - AWS Step Functions

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

什麼是 AWS Step Functions?

AWS Step Functions 是一種無伺服器協調服務,可讓您與AWS Lambda功能和其他功能整合, AWS 服務 以建置關鍵業務應用程式。透過 Step Functions 的圖形化主控台,您可以將應用程式的工作流程視為一系列事件驅動的步驟。

Step Functions 以狀態機器和任務為基礎。在 Step Functions 中,工作流程稱為狀態機器,該狀態機器是一系列事件驅動的步驟。工作流程中的每個步驟稱為狀態。任務狀態代表另一個 AWS 服務 (例如) 執行的工作單位。 AWS Lambda任務狀態可以調用任何 AWS 服務 或 API。

使用 Step Functions 的內建控制項,您可以檢查工作流程中每個步驟的狀態,以確保應用程式依預期順序執行。根據您的使用案例,您可以讓 Step Functions 呼叫 AWS 服務 (例如 Lambda) 來執行工作。您可以建立處理和發佈機器學習模型的工作流程。您可以使用 Step Functions 控制 AWS 服務 AWS Glue,例如建立擷取、轉換和載入 (ETL) 工作流程。也可以為需要人為互動的應用程式建立長時間執行的自動化工作流程。

AWS SDK 與最佳化整合

若要呼叫其他 AWS 服務,您可以使用 Step 函 AWS 式的 SDK 整合,也可以使用 Step 函數的最佳化整合之一。

標準和快速工作流程

Step Functions 有兩種工作流程類型。標準工作流程只執行一次工作流程,最長可執行一年。這表示「標準」工作流程中的每個步驟只會執行一次。但是,Express 工作流程具有 at-least-once 工作流程執行,最多可以執行五分鐘。這表示「快速工作流程」中的一或多個步驟可能會執行多次,而工作流程中的每個步驟至少執行一次。

執行是您執行工作流程以執行工作的執行個體。標準工作流程非常適合長時間執行的可稽核工作流程,因為它們會顯示執行歷程記錄和視覺化偵錯 Express 工作流程非常適合工作 high-event-rate 負載,例如串流資料處理和 IoT 資料擷取。

標準工作流程規

  • 每秒 2,000 次執行速率

  • 每秒 4,000 次狀態轉換率

  • 按狀態轉換定價

  • 顯示執行歷程記錄和視覺偵錯

  • Support 所有服務集成和模式

快速工作流程規

  • 每秒 10 萬次執行速率

  • 近乎無限制的狀態轉換率

  • 按執行次數和持續時間定價

  • 將執行歷史發送到 Amazon CloudWatch

  • 根據啟用的日誌級別顯示執行歷史記錄和視覺化調試

  • Support 所有服務集成和大多數模式

如需標準和快速工作流程的詳細資訊,包括 Step Functions 定價,請參閱下列內容:

使用案例

Step Functions 會管理應用程式的元件和邏輯,因此您可以撰寫較少的程式碼,並專注於快速建置和更新應用程式。本節說明使用 Step Functions 數的典型使用案例。

使用案例 #1: 函數協調


          鏈接

您可以建立以特定順序執行一組 Lambda 函數 (步驟) 的工作流程。一個 Lambda 函數的輸出傳遞到下一個 Lambda 函數的輸入。工作流程中的最後一個步驟會產生結果。使用 Step Functions,您可以查看工作流程中的每個步驟如何相互作用,以確保每個步驟都執行其預期功能。

如需說明如何使用一組函式建立狀態機器的教學課程,請參閱下列內容:

使用案例 #2: 分支


          分支

客戶要求提高信用額度。使用Choice狀態,您可以讓 Step Functions 根據Choice狀態的輸入做出決定。如果請求超過客戶預先核准的信用額度,您可以讓 Step Functions 將客戶的請求傳送給經理以進行登出。如果請求小於客戶預先核准的信用額度,您可以讓「Step Functions」自動核准請求。

使用案例 #3: 錯誤處理


          重試/捕獲

Retry

在此使用案例中,客戶要求使用者名稱。第一次,您的客戶的請求不成功。使用Retry語句,你可以讓 Step Functions 再次嘗試你的客戶的請求。第二次,您的客戶的請求成功。

Catch

在類似的使用案例中,客戶要求不可用的使用者名稱。使用Catch語句,你有 Step Functions 建議一個可用的用戶名。如果您的客戶使用可用的使用者名稱,您可以讓 Step Functions 移至工作流程的下一個步驟,也就是傳送確認電子郵件。如果您的客戶沒有使用可用的使用者名稱,您可以讓 Step Functions 移至工作流程中的另一個步驟,即開始註冊程序。

如需RetryCatch陳述式的詳細範例,請參閱下列內容:

使用案例 #4: 循環中的人


          鏈接

使用銀行應用程序,您的一位客戶向朋友匯款。您的客戶等待確認電子郵件。使用回調和任務令牌,您可以讓 Step Functions 告訴 Lambda 在客戶的朋友收到資金時向您的客戶發送資金並進行報告。Lambda 回報客戶的朋友收到款項後,您就可以讓 Step Functions 進入工作流程的下一個步驟,即傳送確認電子郵件給客戶。

要查看顯示帶有任務令牌的回調的示例項目,請參閱以下內容:

使用案例 #5: 平行處理


          平行處理

客戶會將影片檔案轉換成五種不同的顯示解析度,讓觀眾可以在多個裝置上觀看影片。使用Parallel狀態,Step Functions 輸入視訊檔案,因此 Lambda 可以同時將其處理為五個顯示解析度。

使用案例 #6: 動態平行


          鏈接

一位客戶訂購三件商品,您需要準備每個項目以進行交貨。您可以檢查每個項目的可用性,收集每個項目,然後包裝每個項目以進行交付。使用Map狀態時,Step Functions 可讓 Lambda parallel 處理客戶的每個項目。一旦客戶的所有項目都包裝好交付,Step Functions 會進入工作流程的下一個步驟,即向客戶發送包含跟踪信息的確認電子郵件。

若要查看使用Map狀態顯示動態平行處理原則的範例專案,請參閱下列內容:

服務整合

Step Functions 與多種 AWS 服務集成。若要將 Step Functions 與這些服務結合,請使用下列服務整合模式:

要求回應 (預設值)
  • 呼叫服務,並讓 Step Functions 式在取得 HTTP 回應之後進入下一個狀態。

執行工作 (.sync)
  • 呼叫服務,並讓 Step Functions 等待工作完成。

等待帶有任務令牌的回調(. waitForTask令牌)
  • 使用任務令牌調用服務,並讓 Step Functions 等待,直到任務令牌返回與回調。

下表顯示 Step Functions 的可用服務整合和服務整合模式。

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

  • 每個集成的優化集成模式支持都不同。

  • Express Job 流程支援執行工作 (.sync) 或等待回呼 (. waitForTask令牌)。

  • 如需詳細資訊,請參閱 標準與快速工作流程

Standard Workflows
支援的服務整合
服務 請求回應 執行工作 (.sync) 等候回呼 (.waitForTaskToken)
最佳化整合 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
Amazon SageMaker
Amazon SNS
Amazon SQS
AWS Step Functions
AWS SDK 整合 超過二百
Express Workflows

支援的 區域

大多數 AWS 地區都支援 Step Functions。如需可使用「Step Functions」之區 AWS 域的完整清單,請參閱AWS 區域表

這是您第一次使用 Step Functions 嗎?

如果這是您第一次使用 Step Functions,下列主題可協助您瞭解使用 Step Functions 數的不同部分,包括 Step Functions 如何與其他 AWS 服務結合: