[英]can the last state in a aws step function flow contain a catch statement?
[英]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.