從任務狀態開始工作流程執行 - AWS Step Functions

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

從任務狀態開始工作流程執行

AWS Step Functions 可以直接從狀態機器的 Task 狀態啟動工作流程執行。這可讓您將工作流程分成較小的狀態機器,並啟動這些其他狀態機器的執行。透過啟動這些新的工作流程執行,您可以:

  • 將較高層級的工作流程與較低層級的特定工作流程分開。

  • 多次呼叫不同的狀態機器,以避免重複元素。

  • 建立模組化可重複使用工作流程的程式庫,以加快開發速度。

  • 降低複雜性,並讓您更輕鬆地編輯狀態機器和排除其問題。

Step Functions 可以透過呼叫自己的 API 做為整合式服務來啟動這些工作流程執行。只需從您的 Task 狀態呼叫 StartExecution API 動作,並傳遞必要的參數即可。您可以使用任何服務整合模式呼叫步驟函式 API。

提示

若要將巢狀工作流程的範例部署到您的AWS 帳戶,請參閱單元 13-巢狀 Express 工作流程

若要啟動狀態機器的新執行,請使用類似下列範例的Task狀態:

{ "Type":"Task", "Resource":"arn:aws:states:::states:startExecution", "Parameters":{ "StateMachineArn":"arn:aws:states:us-east-1:123456789012:stateMachine:HelloWorld", "Input":{ "Comment":"Hello world!" }, }, "Retry":[ { "ErrorEquals":[ "StepFunctions.ExecutionLimitExceeded" ] } ], "End":true }

Task 狀態將啟動新的 HelloWorld 狀態機器執行,並傳遞 JSON 評論做為輸入。

注意

StartExecution API 動作配額會限制您可以啟動的執行數。在 StepFunctions.ExecutionLimitExceeded 上使用 Retry,以確保您的執行已啟動。請查看以下內容。

關聯工作流程執行

若要將啟動的工作流程執行與啟動它的執行建立關聯,請將執行 ID 從內容物件傳遞至執行輸入。您可以從執行中執行的 Task 狀態中存取內容物件中的 ID。透過將 .$ 附加至參數名稱,並使用 $$.Execution.Id 參考內容物件中的 ID 來傳遞執行 ID。

"AWS_STEP_FUNCTIONS_STARTED_BY_EXECUTION_ID.$": "$$.Execution.Id"

您可以在啟動執行時使用名為 AWS_STEP_FUNCTIONS_STARTED_BY_EXECUTION_ID 的特殊參數。如果包含此關聯,此關聯會在 Step Functions 主控台的「步驟詳細資訊」區段中提供連結。一旦提供,您便可輕鬆地追蹤工作流程的執行,從正在啟動的執行到已啟動的工作流程執行。使用先前的範例,將執行 ID 與 HelloWorld 狀態機器已啟動的執行建立關聯,如下所示。

{ "Type":"Task", "Resource":"arn:aws:states:::states:startExecution", "Parameters":{ "StateMachineArn":"arn:aws:states:us-east-1:123456789012:stateMachine:HelloWorld", "Input": { "Comment": "Hello world!", "AWS_STEP_FUNCTIONS_STARTED_BY_EXECUTION_ID.$": "$$.Execution.Id" } }, "End":true }

如需詳細資訊,請參閱下列內容: