AWS 步骤函数映射状态:将当前迭代的输出作为输入传递到下一次迭代
AWS step functions map state: pass output from current iteration as input to next iteration
我有一个将数组作为输入的地图状态。我知道地图将遍历数组的元素。但是,我想要做的是将一个迭代的输出传递到下一个迭代的输入中。如果不写入 DB 或 S3,这可能吗? InputPath, OutputPath, ResultPath的组合我试了无数次,但是不管我怎么尝试从state 0修改state 1的输入,它只是从数组中读取,而且似乎我无法修改输入数组从地图内。示例模板:
"Map":{
"Type": "Map",
"ItemsPath": "$.stages",
"Parameters": {
"stage.$": "$$.Map.Item",
},
"Iterator": {
"StartAt": "StartStage",
"States": {
"StartStage":{
"Type": "Task",
"Resource":"arn:aws:states:::lambda:invoke.waitForTaskToken",
"Parameters":{
"FunctionName":"...",
"Payload":{
"myArgs.$": "$.stage.Value",
}
},
"End": true
}
}
},
"MaxConcurrency": 1,
}
另一种选择是像这样创建一个 while 循环:
- 设置一个变量来跟踪您的索引 (pos = 0)
- 您要迭代的所有状态
- 增加你的指数(pos++)
- 选择状态:如果您的索引小于您的项目计数,请转到第 1 步。
这样您就可以访问上一次迭代的结果。
但是处理和合并迭代的结果不会自动发生,你需要添加一个状态来为你做。
我有一个将数组作为输入的地图状态。我知道地图将遍历数组的元素。但是,我想要做的是将一个迭代的输出传递到下一个迭代的输入中。如果不写入 DB 或 S3,这可能吗? InputPath, OutputPath, ResultPath的组合我试了无数次,但是不管我怎么尝试从state 0修改state 1的输入,它只是从数组中读取,而且似乎我无法修改输入数组从地图内。示例模板:
"Map":{
"Type": "Map",
"ItemsPath": "$.stages",
"Parameters": {
"stage.$": "$$.Map.Item",
},
"Iterator": {
"StartAt": "StartStage",
"States": {
"StartStage":{
"Type": "Task",
"Resource":"arn:aws:states:::lambda:invoke.waitForTaskToken",
"Parameters":{
"FunctionName":"...",
"Payload":{
"myArgs.$": "$.stage.Value",
}
},
"End": true
}
}
},
"MaxConcurrency": 1,
}
另一种选择是像这样创建一个 while 循环:
- 设置一个变量来跟踪您的索引 (pos = 0)
- 您要迭代的所有状态
- 增加你的指数(pos++)
- 选择状态:如果您的索引小于您的项目计数,请转到第 1 步。
这样您就可以访问上一次迭代的结果。 但是处理和合并迭代的结果不会自动发生,你需要添加一个状态来为你做。