以整合式服務 AWS Step Functions 的形式管理執行 - AWS Step Functions

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

以整合式服務 AWS Step Functions 的形式管理執行

Step Functions 與自己的 API 作為服務集成集成。這允許 Step Functions 直接從正在運行的執行的任務狀態啟動狀態機的新執行。在建置新的工作流程時,使用巢狀工作流程執行來降低主要工作流程的複雜性,並重複使用常見的程序。

優化 Step Functions 集成與步 Step Functions AWS SDK 集成有何不同

請注意,請求回應等候傳回任務字符的回呼整合模式沒有最佳化。

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

支援的 Step Functions 式 API 和語法:

以下包含 Task 狀態,此狀態會啟動另一個狀態機器的執行並等待其完成。

{ "Type":"Task", "Resource":"arn:aws:states:::states:startExecution.sync:2", "Parameters":{ "Input":{ "Comment": "Hello world!" }, "StateMachineArn":"arn:aws:states:us-east-1:123456789012:stateMachine:HelloWorld", "Name":"ExecutionName" }, "End":true }

以下包含 Task 狀態,此狀態會啟動另一個狀態機器的執行。

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

以下包含 Task 狀態,此狀態會實作回呼服務整合模式。

{ "Type":"Task", "Resource":"arn:aws:states:::states:startExecution.waitForTaskToken", "Parameters":{ "Input":{ "Comment": "Hello world!", "token.$": "$$.Task.Token" }, "StateMachineArn":"arn:aws:states:us-east-1:123456789012:stateMachine:HelloWorld", "Name":"ExecutionName" }, "End":true }

若要將巢狀工作流程執行與啟動它的父執行建立關聯,請傳遞特別命名的參數,其中包含從內容物件提取的執行 ID。啟動巢狀執行時,請使用名為 AWS_STEP_FUNCTIONS_STARTED_BY_EXECUTION_ID 的參數。透過將 .$ 附加至參數名稱,並使用 $$.Execution.Id 參考內容物件中的 ID 來傳遞執行 ID。如需詳細資訊,請參閱 存取內容物件

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

巢狀狀態機器會傳回下列內容:

資源 輸出
startExecution.sync 字串
startExecution.sync:2 JSON

兩者都將等待巢狀狀態機器完成,但它們會傳回不同的 Output 格式。例如,如果您建立傳回物件的 Lambda 函數{ "MyKey": "MyValue" },您會得到下列回應:

對於 startExecution.sync:

{ <other fields> "Output": "{ \"MyKey\": \"MyValue\" }" }

對於 startExecution.sync:2:

{ <other fields> "Output": { "MyKey": "MyValue" } }

為巢狀狀態機器設定 IAM 許可

父狀態機器判斷子狀態機器是否已使用輪詢和事件完成執行。輪詢需要權限,states:DescribeExecution而傳送 EventBridge 至 Step Functions 的事件需要events:PutTargetsevents:PutRule、和的權限events:DescribeRule。如果您的 IAM 角色缺少這些許可,則父狀態機器可能會有一段延遲,才能知道子狀態機器的執行完成。

對於要求單一巢狀工作流程執行的狀態機器,請使用將權限限制StartExecution為該狀態機器的 IAM 政策。

如需詳細資訊,請參閱 Step Functions 的 IAM 許可。