AWS Lambda无法从API网关读取查询参数

时间:2019-06-03 11:20:17

标签: amazon-web-services aws-lambda aws-api-gateway

对于以下使用Lambda-Proxy集成并使用URL的lambda函数

/api/random?min=1&max=10

我的代码:

exports.handler = async (event) => {
    let min = event.queryStringParameters.min
    let max = event.queryStringParameters.max
    console.log("min", min)
    console.log("max",max)
    const response = {
        statusCode: 200,
        body: JSON.stringify(Math.floor(Math.random()*max)+min),
    };
    return response;
};

执行失败,出现以下错误:

Response:
{
  "errorType": "TypeError",
  "errorMessage": "Cannot read property 'min' of undefined",
  "trace": [
    "TypeError: Cannot read property 'min' of undefined",
    "    at Runtime.exports.handler (/var/task/index.js:3:43)",
    "    at Runtime.handleOnce (/var/runtime/Runtime.js:65:25)",
    "    at process._tickCallback (internal/process/next_tick.js:68:7)"
  ]
}

使用JSON.stringify(event)记录事件将返回正确的参数:

{"min":"1","max":"10"}

2 个答案:

答案 0 :(得分:0)

  

使用JSON记录事件.stringify(event)返回正确的   参数:

     

{“ min”:“ 1”,“ max”:“ 10”}

您的Lambda事件似乎没有附加queryStringParameters属性。您需要在事件中添加它或将代码修改为:

let { min, max } = event

答案 1 :(得分:0)

就我而言,这是我稍后在代码中调用的函数中的一个错误(与 queryString 无关), 当我把它放在评论中时,错误消失了!