AWS Step Function映射任务未将输入传递给启动任务

时间:2020-06-30 20:55:45

标签: amazon-web-services aws-lambda aws-step-functions

我观察到我的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"
          }

1 个答案:

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