簡體   English   中英

在執行每個 map 迭代后從 AWS 步驟 function 獲得響應

[英]get Response from AWS step function after execution of each map iteration

我有一個用例,其中用戶定義了一個工作流。 當用戶點擊 API 時,步驟 function 開始。 lambda 返回基於用戶的步驟列表並啟動工作流,例如:

步驟1。 它處理(提取)文檔,
第2步。 向數據庫插入一些數據

第三步。 .....

第4步。 .....

這里的步驟在 map 中,因為這些步驟是從 lambda 返回的。是否有任何方法可以從每次 map 迭代中獲得響應,以便我可以向用戶顯示流程在哪一步,以及上一步的 output。

這是我的步驟 function 設計: 在此處輸入圖像描述

test-fetch-input-workflow :返回一個數組:[step1, step2, ....]

workflow step-lambda :根據步驟名稱調用一些 lambda

假設您使用的是標准工作流程,您可以使用 GetExecutionHistory API 操作獲取此信息: https://docs.aws.amazon.com/step-functions/latest/apireference/API_GetExecutionHistory.html

您需要查找 MapIterationSucceeded 類型的事件,獲取 previousEventId,然后在具有該 ID 的 HistoryEvent 中查找 output。

例如,如果您有這樣一台 state 機器:

{    
"StartAt": "Generate Array for Map",
"States": {
  "Generate Array for Map": {
    "Type": "Pass",
    "Next": "Map",
    "Result": [
      1,
      2,
      3,
      4,
      5
    ]
  },
  "Map": {
    "Type": "Map",
    "ItemProcessor": {
      "ProcessorConfig": {
        "Mode": "INLINE"
      },
      "StartAt": "Generate Random Number",
      "States": {
        "Generate Random Number": {
          "Type": "Pass",
          "End": true,
          "Parameters": {
            "Random Number.$": "States.MathRandom(1,1000)"
          }
        }
      }
    },
    "End": true
  }
}

}

您的執行歷史將如下所示:

{
"events": [
    {
        "timestamp": "2022-12-08T16:44:07.651000-08:00",
        "type": "ExecutionStarted",
        "id": 1,
        "previousEventId": 0,
        "executionStartedEventDetails": {
            "input": "{\n    \"Comment\": \"Insert your JSON here\"\n}",
            "inputDetails": {
                "truncated": false
            },
            "roleArn": "arn:aws:iam::000000000000:role/service-role/StepFunctions-MapTest-role-613230dd"
        }
    },
    {
        "timestamp": "2022-12-08T16:44:07.698000-08:00",
        "type": "PassStateEntered",
        "id": 2,
        "previousEventId": 0,
        "stateEnteredEventDetails": {
            "name": "Generate Array for Map",
            "input": "{\n    \"Comment\": \"Insert your JSON here\"\n}",
            "inputDetails": {
                "truncated": false
            }
        }
    },
    {
        "timestamp": "2022-12-08T16:44:07.698000-08:00",
        "type": "PassStateExited",
        "id": 3,
        "previousEventId": 2,
        "stateExitedEventDetails": {
            "name": "Generate Array for Map",
            "output": "[1,2,3,4,5]",
            "outputDetails": {
                "truncated": false
            }
        }
    },
    {
        "timestamp": "2022-12-08T16:44:07.698000-08:00",
        "type": "MapStateEntered",
        "id": 4,
        "previousEventId": 3,
        "stateEnteredEventDetails": {
            "name": "Map",
            "input": "[1,2,3,4,5]",
            "inputDetails": {
                "truncated": false
            }
        }
    },
    {
        "timestamp": "2022-12-08T16:44:07.698000-08:00",
        "type": "MapStateStarted",
        "id": 5,
        "previousEventId": 4,
        "mapStateStartedEventDetails": {
            "length": 5
        }
    },
    {
        "timestamp": "2022-12-08T16:44:07.698000-08:00",
        "type": "MapIterationStarted",
        "id": 6,
        "previousEventId": 5,
        "mapIterationStartedEventDetails": {
            "name": "Map",
            "index": 0
        }
    },
    {
        "timestamp": "2022-12-08T16:44:07.698000-08:00",
        "type": "MapIterationStarted",
        "id": 7,
        "previousEventId": 5,
        "mapIterationStartedEventDetails": {
            "name": "Map",
            "index": 1
        }
    },
    {
        "timestamp": "2022-12-08T16:44:07.698000-08:00",
        "type": "MapIterationStarted",
        "id": 8,
        "previousEventId": 5,
        "mapIterationStartedEventDetails": {
            "name": "Map",
            "index": 2
        }
    },
    {
        "timestamp": "2022-12-08T16:44:07.698000-08:00",
        "type": "MapIterationStarted",
        "id": 9,
        "previousEventId": 5,
        "mapIterationStartedEventDetails": {
            "name": "Map",
            "index": 3
        }
    },
    {
        "timestamp": "2022-12-08T16:44:07.698000-08:00",
        "type": "MapIterationStarted",
        "id": 10,
        "previousEventId": 5,
        "mapIterationStartedEventDetails": {
            "name": "Map",
            "index": 4
        }
    },
    {
        "timestamp": "2022-12-08T16:44:07.698000-08:00",
        "type": "PassStateEntered",
        "id": 11,
        "previousEventId": 6,
        "stateEnteredEventDetails": {
            "name": "Generate Random Number",
            "input": "1",
            "inputDetails": {
                "truncated": false
            }
        }
    },
    {
        "timestamp": "2022-12-08T16:44:07.698000-08:00",
        "type": "PassStateExited",
        "id": 12,
        "previousEventId": 11,
        "stateExitedEventDetails": {
            "name": "Generate Random Number",
            "output": "{\"Random Number\":259}",
            "outputDetails": {
                "truncated": false
            }
        }
    },
    {
        "timestamp": "2022-12-08T16:44:07.698000-08:00",
        "type": "MapIterationSucceeded",
        "id": 13,
        "previousEventId": 12,
        "mapIterationSucceededEventDetails": {
            "name": "Map",
            "index": 0
        }
    },
    {
        "timestamp": "2022-12-08T16:44:07.698000-08:00",
        "type": "PassStateEntered",
        "id": 14,
        "previousEventId": 7,
        "stateEnteredEventDetails": {
            "name": "Generate Random Number",
            "input": "2",
            "inputDetails": {
                "truncated": false
            }
        }
    },
    {
        "timestamp": "2022-12-08T16:44:07.698000-08:00",
        "type": "PassStateExited",
        "id": 15,
        "previousEventId": 14,
        "stateExitedEventDetails": {
            "name": "Generate Random Number",
            "output": "{\"Random Number\":776}",
            "outputDetails": {
                "truncated": false
            }
        }
    },
    {
        "timestamp": "2022-12-08T16:44:07.698000-08:00",
        "type": "MapIterationSucceeded",
        "id": 16,
        "previousEventId": 15,
        "mapIterationSucceededEventDetails": {
            "name": "Map",
            "index": 1
        }
    },
    {
        "timestamp": "2022-12-08T16:44:07.698000-08:00",
        "type": "PassStateEntered",
        "id": 17,
        "previousEventId": 8,
        "stateEnteredEventDetails": {
            "name": "Generate Random Number",
            "input": "3",
            "inputDetails": {
                "truncated": false
            }
        }
    },
    {
        "timestamp": "2022-12-08T16:44:07.698000-08:00",
        "type": "PassStateExited",
        "id": 18,
        "previousEventId": 17,
        "stateExitedEventDetails": {
            "name": "Generate Random Number",
            "output": "{\"Random Number\":743}",
            "outputDetails": {
                "truncated": false
            }
        }
    },
    {
        "timestamp": "2022-12-08T16:44:07.698000-08:00",
        "type": "MapIterationSucceeded",
        "id": 19,
        "previousEventId": 18,
        "mapIterationSucceededEventDetails": {
            "name": "Map",
            "index": 2
        }
    },
    {
        "timestamp": "2022-12-08T16:44:07.698000-08:00",
        "type": "PassStateEntered",
        "id": 20,
        "previousEventId": 9,
        "stateEnteredEventDetails": {
            "name": "Generate Random Number",
            "input": "4",
            "inputDetails": {
                "truncated": false
            }
        }
    },
    {
        "timestamp": "2022-12-08T16:44:07.698000-08:00",
        "type": "PassStateExited",
        "id": 21,
        "previousEventId": 20,
        "stateExitedEventDetails": {
            "name": "Generate Random Number",
            "output": "{\"Random Number\":790}",
            "outputDetails": {
                "truncated": false
            }
        }
    },
    {
        "timestamp": "2022-12-08T16:44:07.698000-08:00",
        "type": "MapIterationSucceeded",
        "id": 22,
        "previousEventId": 21,
        "mapIterationSucceededEventDetails": {
            "name": "Map",
            "index": 3
        }
    },
    {
        "timestamp": "2022-12-08T16:44:07.698000-08:00",
        "type": "PassStateEntered",
        "id": 23,
        "previousEventId": 10,
        "stateEnteredEventDetails": {
            "name": "Generate Random Number",
            "input": "5",
            "inputDetails": {
                "truncated": false
            }
        }
    },
    {
        "timestamp": "2022-12-08T16:44:07.698000-08:00",
        "type": "PassStateExited",
        "id": 24,
        "previousEventId": 23,
        "stateExitedEventDetails": {
            "name": "Generate Random Number",
            "output": "{\"Random Number\":632}",
            "outputDetails": {
                "truncated": false
            }
        }
    },
    {
        "timestamp": "2022-12-08T16:44:07.698000-08:00",
        "type": "MapIterationSucceeded",
        "id": 25,
        "previousEventId": 24,
        "mapIterationSucceededEventDetails": {
            "name": "Map",
            "index": 4
        }
    },
    {
        "timestamp": "2022-12-08T16:44:07.698000-08:00",
        "type": "MapStateSucceeded",
        "id": 26,
        "previousEventId": 25
    },
    {
        "timestamp": "2022-12-08T16:44:07.698000-08:00",
        "type": "MapStateExited",
        "id": 27,
        "previousEventId": 25,
        "stateExitedEventDetails": {
            "name": "Map",
            "output": "[{\"Random Number\":259},{\"Random Number\":776},{\"Random Number\":743},{\"Random Number\":790},{\"Random Number\":632}]",
            "outputDetails": {
                "truncated": false
            }
        }
    },
    {
        "timestamp": "2022-12-08T16:44:07.745000-08:00",
        "type": "ExecutionSucceeded",
        "id": 28,
        "previousEventId": 27,
        "executionSucceededEventDetails": {
            "output": "[{\"Random Number\":259},{\"Random Number\":776},{\"Random Number\":743},{\"Random Number\":790},{\"Random Number\":632}]",
            "outputDetails": {
                "truncated": false
            }
        }
    }
]

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM