如何防止 Aws Step Function 在调用 Lambda 时插入父键“Input”?

问题描述

我如何定义一个 AWS Step Function 状态,该状态将完全相同的哈希传递到我提供给 Step Function 的调用 Lambda 中(例如,不将输入哈希在新键“Input”下向下推一级)?

我的 ruby​​ AWS Lambda 函数假设传入的 event 哈希如下所示:

{
  "querystringparameters": {
    "foo": "bar"
  }
}

当我在调用该 lambda 的 AWS Step Function 上执行测试执行并提供与上述相同的哈希时,传递到 lambda 的 event 哈希与我提供的哈希不同到 Step Function... 它有一个名为“Input”的额外父键:

{
  "Input": 
   {
     "querystringparameters": {
        "foo": "bar"
    }
  }
}

在 Step Function 中,调用 lambda 的状态定义为:

    "invoke foobar": {
      "Type": "Task","Resource": "arn:aws:states:::lambda:invoke","Parameters": {
        "FunctionName": "arn:aws:lambda:xxxx:xxxx:function:xxxx:$LATEST","Payload": {
          "Input.$": "$"
        }
      },"Next": "Done","TimeoutSeconds": 10
    },

或者 Step Function 总是接受它的输入并将它“放在”一个叫做“Input”的键下?

如果在这种情况下总是将“输入”键添加到传递给 Lambda 函数的事件哈希中,那么如何编写 Lambda 以便可以从 两个 步骤中调用函数(假定根键为“Input”)和 API 网关(使用不同的根键“querystringparameters”)?

解决方法

取而代之的是:

"Payload": {
  "Input.$": "$"
}

你应该这样做:

"Payload.$": "$"

这会将输入直接传递给 lambda 函数的 Payload