本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
AWS Step Functions 可以直接從Task
狀態機器的狀態啟動工作流程執行。這可讓您將工作流程分成較小的狀態機器,並啟動這些其他狀態機器的執行。透過啟動這些新的工作流程執行,您可以:
-
將較高層級的工作流程與較低層級的特定工作流程分開。
-
多次呼叫不同的狀態機器,以避免重複元素。
-
建立模組化可重複使用工作流程的程式庫,以加快開發速度。
-
降低複雜性,並讓您更輕鬆地編輯狀態機器和排除其問題。
Step Functions 可以透過呼叫自己的 API 做為整合服務來啟動這些工作流程執行。只需從您的 Task
狀態呼叫 StartExecution
API 動作,並傳遞必要的參數即可。您可以使用任何服務整合模式呼叫 Step Functions API。
提示
若要部署巢狀工作流程範例,請參閱 AWS Step Functions 研討會中的最佳化成本
若要開始新的狀態機器執行,請使用類似下列範例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。將 附加.$
至 參數名稱,並使用 參考內容物件中的 ID,以傳遞執行 ID$$.Execution.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
}
如需詳細資訊,請參閱下列內容: