AWS Step Function 映射任务未将输入传递给启动任务
AWS Step Function map task not passing input to starting task
我观察到我的 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"
}
查看支持参数下的 Lambda service integration,我们可以看到 Payload 是函数的输入,您没有在参数中指定它。如下更改您的 Lambda 任务状态 JSON 应该将输入传递给状态作为 Lambda 函数的输入:
"push_stats": {
"Type": "Task",
"Resource": "arn:aws:states:::lambda:invoke",
"Parameters": {
"Payload.$": "$",
"FunctionName": "${self:functions.push_stats_to_prometheus.name}"
},
"End": true
}
另请查看我之前 关于使用 Step Functions 调用 Lambda 函数的不同方法,我认为选项 2(Lambda ARN 作为资源)可能更容易使用。
我观察到我的 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"
}
查看支持参数下的 Lambda service integration,我们可以看到 Payload 是函数的输入,您没有在参数中指定它。如下更改您的 Lambda 任务状态 JSON 应该将输入传递给状态作为 Lambda 函数的输入:
"push_stats": {
"Type": "Task",
"Resource": "arn:aws:states:::lambda:invoke",
"Parameters": {
"Payload.$": "$",
"FunctionName": "${self:functions.push_stats_to_prometheus.name}"
},
"End": true
}
另请查看我之前