使用 ResultSelector in Map / Iterator in AWS step function : $.variable name is taking literally
using ResultSelector in Map / Iterator in AWS step function : $.variable name is taken literally
我想在 Map
步骤的每次迭代中过滤输出,然后再将其收集到数组中。但是,当我为此目的使用 ResultSelector
时,我得到的是逐字结果而不是变量的内容。
CallWorkerLambda
returns 中的每个 lambda 都是一个包含元素 "output"
的字典。我只想采用这个元素(如果我不这样做,IO 管道会被返回消息的服务部分淹没)。为此,我在 Iterator
中使用 "ResultSelector": "$.output"
,然后在外部 Map
步骤中使用 "ResultPath": "$.output_array"
。
但是,我得到的结果数组看起来像 "output_array": ["$.output", "$.output", "$.output", ... ]
下面是步骤代码:
"ProcessPatch": {
"Type": "Map",
"Next": "Aggregate",
"InputPath": "$",
"ItemsPath": "$.taskdef",
"MaxConcurrency": 0,
"ResultPath": "$.output_array",
"Parameters": {
"Payload.$": "$$.Map.Item.Value",
"algo_lambda.$": "$.staticdata.algo_lambda",
"staticdata.$": "$.staticdata"
},
"OutputPath": "$",
"Iterator": {
"StartAt": "CallWorkerLambda",
"States": {
"CallWorkerLambda": {
"Type": "Task",
"Resource": "arn:aws:states:::lambda:invoke",
"Parameters": {
"FunctionName.$": "$.algo_lambda",
"Payload": {
"s.$": "$.Payload",
"staticdata.$": "$.staticdata"
}
},
"ResultSelector": "$.output",
"End": true
}
}
}
}
关于无法识别 $.variables
的原因以及如何解决它有什么想法吗?
ResultSelector 字段允许您创建键值对的集合,其中的值是静态的或从状态的结果中选择的。
所以 ResultSelector 应该这样使用:
"ResultSelector": {
"ClusterId.$": "$.output.ClusterId",
"ResourceType.$": "$.resourceType"
},
但在您的示例中它缺少键值对:
"ResultSelector": "$.output"
我想在 Map
步骤的每次迭代中过滤输出,然后再将其收集到数组中。但是,当我为此目的使用 ResultSelector
时,我得到的是逐字结果而不是变量的内容。
CallWorkerLambda
returns 中的每个 lambda 都是一个包含元素 "output"
的字典。我只想采用这个元素(如果我不这样做,IO 管道会被返回消息的服务部分淹没)。为此,我在 Iterator
中使用 "ResultSelector": "$.output"
,然后在外部 Map
步骤中使用 "ResultPath": "$.output_array"
。
但是,我得到的结果数组看起来像 "output_array": ["$.output", "$.output", "$.output", ... ]
下面是步骤代码:
"ProcessPatch": {
"Type": "Map",
"Next": "Aggregate",
"InputPath": "$",
"ItemsPath": "$.taskdef",
"MaxConcurrency": 0,
"ResultPath": "$.output_array",
"Parameters": {
"Payload.$": "$$.Map.Item.Value",
"algo_lambda.$": "$.staticdata.algo_lambda",
"staticdata.$": "$.staticdata"
},
"OutputPath": "$",
"Iterator": {
"StartAt": "CallWorkerLambda",
"States": {
"CallWorkerLambda": {
"Type": "Task",
"Resource": "arn:aws:states:::lambda:invoke",
"Parameters": {
"FunctionName.$": "$.algo_lambda",
"Payload": {
"s.$": "$.Payload",
"staticdata.$": "$.staticdata"
}
},
"ResultSelector": "$.output",
"End": true
}
}
}
}
关于无法识别 $.variables
的原因以及如何解决它有什么想法吗?
ResultSelector 字段允许您创建键值对的集合,其中的值是静态的或从状态的结果中选择的。 所以 ResultSelector 应该这样使用:
"ResultSelector": {
"ClusterId.$": "$.output.ClusterId",
"ResourceType.$": "$.resourceType"
},
但在您的示例中它缺少键值对:
"ResultSelector": "$.output"