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