本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 Step Functions 和 Lambda 在工作流程中啟動工作流程
此範例專案示範如何使用 AWS Step Functions 狀態機啟動其他狀態機執行。如需有關從另一個狀態機器啟動狀態機器執行的資訊,請參閱從 Step Functions 數中的工作狀態啟動工作流程執行。
步驟 1:建立狀態機
-
開啟 Step Functions 主控台
,然後選擇建立狀態機器。 -
請
Start a workflow within a workflow
在搜索框中鍵入內容,然后從返回的搜索結果中選擇「在某個工作流程中啟動某個工作流程」。 -
選擇 Next (下一步) 繼續。
-
選擇 [執行示範] 以建立唯讀和 ready-to-deploy 工作流程,或選擇 [在其上建置] 建立可編輯的狀態機定義,您可以在其上建置並稍後進行部署。
此範例專案會部署下列資源:
-
一個額外的狀態機。此狀態機器的執行由您執行的狀態機器啟動。
-
一個回調 Lambda 函數。該函數用於附加狀態機來實現回調機制。
-
同時 AWS Step Functions 狀態機器
-
相關 AWS Identity and Access Management (IAM) 角色
下圖顯示工作流程範例專案中「啟動工作流程」的工作流程圖形:
-
-
選擇「使用範本」繼續進行選取。
接下來的步驟取決於您之前的選擇:
-
執行示範 — 您可以先檢閱狀態機器,然後再建立唯讀專案,其中資源部署者 AWS CloudFormation 到您的 AWS 帳戶.
您可以檢視狀態機器定義,當您準備就緒時,請選擇 [部署並執行] 以部署專案並建立資源。
部署最多可能需要 10 分鐘的時間來建立資源和權限。您可以使用「堆疊 ID」連結來監控進度 AWS CloudFormation.
部署完成後,您應該會在控制台中看到新的狀態機器。
-
建立在其上 — 您可以檢閱和編輯工作流程定義。您可能需要在範例專案中設定預留位置的值,然後才能嘗試執行自訂工作流程。
注意
部署到您帳戶的服務可能需要支付標準費用。
步驟 2:運行狀態機
-
在 [狀態電腦] 頁面上,選擇您的範例專案。
-
在範例專案頁面上,選擇 [開始執行]。
-
在 [開始執行] 對話方塊中,執行下列動作:
-
(選擇性) 輸入自訂執行名稱,以覆寫產生的預設值。
非ASCII名稱和記錄
Step Functions 接受包含非ASCII字元的狀態機器、執行項目、活動和標籤的名稱。由於此類字元不適用於 Amazon CloudWatch,因此我們建議您僅使用ASCII字元,以便在中追蹤指標 CloudWatch。
-
(選擇性) 在「輸入」方塊中,將輸入值輸入為JSON。如果您正在運行演示,則可以跳過此步驟。
-
選擇 Start execution (開始執行)。
「Step Functions」主控台會將您導向「執行詳細資訊」頁面,您可以在其中選擇「圖形」檢視中的狀態,以瀏覽步驟詳情窗格中的相關資訊。
-
範例狀態機器程式碼
此示例項目中的狀態機集成了另一個狀態機和 AWS Lambda 通過將參數直接傳遞給這些資源。
瀏覽此範例狀態機器,以查看 Step Functions 如何呼叫其他狀態機器的StartExecution
API動作。它會平行啟動另一部狀態機器的兩個執行個體:一個使用 執行任務 (.sync) 模式,另一個使用 使用任務令牌等待回調 模式。
有關如何進一步了解 AWS Step Functions 可以控制其他 AWS 服務,請參閱整合服務與 Step Functions。
{
"Comment": "An example of combining workflows using a Step Functions StartExecution task state with various integration patterns.",
"StartAt": "Start new workflow and continue",
"States": {
"Start new workflow and continue": {
"Comment": "Start an execution of another Step Functions state machine and continue",
"Type": "Task",
"Resource": "arn:aws:states:::states:startExecution",
"Parameters": {
"StateMachineArn": "arn:aws:states:us-east-1:123456789012:stateMachine:NestingPatternAnotherStateMachine-HZ9gtgspmdun",
"Input": {
"NeedCallback": false,
"AWS_STEP_FUNCTIONS_STARTED_BY_EXECUTION_ID.$": "$$.Execution.Id"
}
},
"Next": "Start in parallel"
},
"Start in parallel": {
"Comment": "Start two executions of the same state machine in parallel",
"Type": "Parallel",
"End": true,
"Branches": [
{
"StartAt": "Start new workflow and wait for completion",
"States": {
"Start new workflow and wait for completion": {
"Comment": "Start an execution of the same 'NestingPatternAnotherStateMachine' and wait for its completion",
"Type": "Task",
"Resource": "arn:aws:states:::states:startExecution.sync",
"Parameters": {
"StateMachineArn": "arn:aws:states:us-east-1:123456789012:stateMachine:NestingPatternAnotherStateMachine-HZ9gtgspmdun",
"Input": {
"NeedCallback": false,
"AWS_STEP_FUNCTIONS_STARTED_BY_EXECUTION_ID.$": "$$.Execution.Id"
}
},
"OutputPath": "$.Output",
"End": true
}
}
},
{
"StartAt": "Start new workflow and wait for callback",
"States": {
"Start new workflow and wait for callback": {
"Comment": "Start an execution and wait for it to call back with a task token",
"Type": "Task",
"Resource": "arn:aws:states:::states:startExecution.waitForTaskToken",
"Parameters": {
"StateMachineArn": "arn:aws:states:us-east-1:123456789012:stateMachine:NestingPatternAnotherStateMachine-HZ9gtgspmdun",
"Input": {
"NeedCallback": true,
"AWS_STEP_FUNCTIONS_STARTED_BY_EXECUTION_ID.$": "$$.Execution.Id",
"TaskToken.$": "$$.Task.Token"
}
},
"End": true
}
}
}
]
}
}
}
有關如何在使用步驟函數與其他功能IAM時進行配置的資訊 AWS 服務,請參閱Step Functions 式如何為整合式服務產生IAM原則。