簡體   English   中英

如何在 AWS 步驟 function 中獲取迭代器/映射 state 的索引

[英]How can I get the index of an iterator/map state in AWS step function

我正在嘗試創建一個步驟 function,它在 map state 中創建一個結果數組。我的代碼看起來像這樣:

"MyIterator": {
   "Type": "Map",
   "InputPath": "$.myArray",
   "Iterator": {
     "StartAt": "Parser",
     "States": {
       "Parser": {
         "Type": "Task",
         "Resource": "${my-lambda}",
         "ResultPath": "$.Result",
         "End": true
     }
  }
}

我希望我的步驟 function 到 go 通過我提供的數組,並創建一個數組作為結果,但我不確定該怎么做。 例如,如果我的 lambda 將是 function: x = x + 1並且輸入是myArray = [0,1,2] ,則結果將是Result = [1,2,3] 我想到的是在我的Parser階段訪問迭代的索引。 例如,如果i是迭代的索引,則使用"ResultPath": "$.Result[i]" 這在 AWS 步驟函數中可能嗎? 我知道我可以創建另一個 lambda 作為計數器,我只是不想添加另一個,因為對於這樣的用例來說它看起來太復雜了。

我嘗試使用上面的代碼,但迭代似乎每次都覆蓋了參數Result

Map 項目索引在上下文 object上以$$.Map.Item.Index的形式提供。 ItemSelector字段*覆蓋傳遞給每個 Map 迭代的值,可以引用上下文 object:

"MyIterator": {
   "Type": "Map",
   "InputPath": "$.myArray",
   "Iterator": {
     "StartAt": "Parser",
     "States": {
       "Parser": {
         "Type": "Task",
         "Resource": "${my-lambda}",
         "ResultPath": "$.Result",
         "End": true
     }
  },
  "ItemSelector": {
    "ContextIndex.$": "$$.Map.Item.Index",
    "ContextValue.$": "$$.Map.Item.Value"
  },
}

使用您的示例myArray = [0,1,2] ,第一次迭代將收到:

{ "ContextIndex": 0, "ContextValue": 0 }

* ItemSelector替換了已棄用的Parameters字段,它做了同樣的事情。 另請注意, ItemProcessor已替換已棄用的Iterator字段。 不過,它們仍然有效。

暫無
暫無

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

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