活動 - AWS Step Functions

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

活動

活動是一項AWS Step Functions功能,可讓您在狀態機器中執行工作,工作是由可在 Amazon 彈性運算雲端 (Amazon EC2)、Amazon 彈性容器服務 (Amazon ECS)、行動裝置上託管的工作執行工作 — 基本上在任何地方。

概要

在 AWS Step Functions 中,活動可將在某處執行的程式碼 (也稱為活動工作者) 與狀態機器中的特定任務建立關聯。您可以使用 Step Functions 主控台或呼叫來建立活動CreateActivity。這會為您的任務狀態提供亞馬遜資源名稱 (ARN)。使用此 ARN 來輪詢任務狀態,以便在您的活動工作者中使用。

注意

活動並未進行版本控制,應該可與舊版相容。如果您必須對活動進行向後不相容的變更,請使用唯一名稱在「步驟函數」中建立活動。

活動工作者可以是在 Amazon EC2 執行個體上執行的應用程式、AWS Lambda函數、行動裝置:任何可以建立 HTTP 連線的應用程式,託管在任何地方。當「步驟函數」達到活動任務狀態時,工作流程會等待活動 Worker 輪詢任務。活動工作者通過使用GetActivityTask,並發送相關活動的 ARN 輪詢步驟函數。 GetActivityTask傳回回應,其中包括 input (工作的 JSON 輸入字串) 和 taskToken(工作的唯一識別碼)。在活動工作者完成其工作之後,就可以使用 SendTaskSuccessSendTaskFailure 來提供成功或失敗的報告。這兩個呼叫會使用 GetActivityTask 所提供的 taskToken,將結果與該任務建立關聯。

活動任務的相關 API

Step Functions 提供用於建立和列出活動、要求工作,以及根據 Worker 的結果管理狀態機器流程的 API。

以下是與活動相關的步驟函數 API:

注意

透過 GetActivityTask 輪詢活動任務,可能會導致某些實作延遲。請參閱 輪詢活動任務時避免延遲

等待活動任務完成

在任務定義中設定 TimeoutSeconds,以設定狀態等待的時間長度。若要讓任務保持作用中並且等待,請在 TimeoutSeconds 中設定的時間內使用 SendTaskHeartbeat,定期從您的活動工作者傳送活動訊號。藉由設定較長的逾時持續時間並主動傳送活動訊號,Step Functions 中的活動最多可等待一年的執行完成。

例如,如果您需要一個可等待冗長程序結果的工作流程,請執行下列動作:

  1. 使用主控台來建立活動,或藉由呼叫 CreateActivity 來建立它。記下活動 ARN。

  2. 在狀態機器定義的活動任務狀態中參考該 ARN,並且設定 TimeoutSeconds

  3. 使用 GetActivityTask,並且參考該 ARN,以實作可輪詢工作的活動工作者。

  4. 在您於狀態機器任務定義的 HeartbeatSeconds 中所設定的時間內,定期使用 SendTaskHeartbeat,讓任務不會逾時。

  5. 開始執行您的狀態機器。

  6. 啟動您的活動工作者程序。

執行會暫停於活動任務狀態,並等待活動工作者輪詢任務。將 taskToken 提供給活動工作者後,工作流程就會等待 SendTaskSuccessSendTaskFailure 提供狀態。如果在 TimeoutSeconds 中設定的時間前,執行並未收到這些資訊或 SendTaskHeartbeat 呼叫,則執行會失敗且執行歷史記錄中會包含 ExecutionTimedOut 事件。

後續步驟

如要詳細了解建立使用活動工作者的狀態機器,請參閱: