我观察到我的Step Function映射没有将输入传递给任务的lambda。有谁知道如何解决这一问题?运行step函数时,可以看到输入已正确传递给任务,但是lambda函数中的事件变量没有任何显示。
"push_stats_to_prometheus": {
"Type": "Map",
"InputPath": "$.Payload",
"ItemsPath": "$.body",
"MaxConcurrency": 10,
"Iterator": {
"StartAt": "push_stats",
"States": {
"push_stats": {
"Type": "Task",
"Resource": "arn:aws:states:::lambda:invoke",
"Parameters": {
"FunctionName": "${self:functions.push_stats_to_prometheus.name}"
},
"End": true
}
}
},
"ResultPath": "$.Payload.body",
"Next": "push_score_to_prometheus"
}
答案 0 :(得分:1)
查看受支持参数下的Lambda service integration,我们可以看到有效负载是函数的输入,并且您没有在Parameters中指定它。如下更改Lambda Task State JSON,应将输入传递给State作为Lambda函数的输入:
"push_stats": {
"Type": "Task",
"Resource": "arn:aws:states:::lambda:invoke",
"Parameters": {
"Payload.$": "$",
"FunctionName": "${self:functions.push_stats_to_prometheus.name}"
},
"End": true
}
还可以查看我以前的answer上有关使用“步进函数”调用Lambda函数的不同方法的信息,我认为选项2(Lambda ARN作为资源)可能更易于使用。