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 作为资源)可能更容易使用。