如何在API网关中传递路径参数来调用lambda函数?

时间:2019-12-04 12:26:00

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

我需要在API中传递路径参数。

通过使用映射模板,我可以传递查询参数并在函数中使用它们。

映射模板:

{
     "Id": "$input.params('Id')" //this works fine after passing params as <url>?param=vale
}

参考this,我如下创建了映射模板-

{
    "Id": "$input.params().querystring.get('Id')" // requirement is to be able to use <url>/value
}

我尝试在生成模板下使用“方法请求模板”,但是它也不起作用。

当我调用URL urlname.execute-api.us-east-2.amazonaws.com/stag/functionname时,它将给出未定义的值。

这就是我使用参数的方式:

class Lambda {
    static run(event, context, callback) {
      callback(null, 'Id '+ event.Id);
    }  
  }
  module.exports = Lambda;

另外,请告诉我如何在代码中使用这些参数。 友善:)

1 个答案:

答案 0 :(得分:2)

为了能够使用<url>/value并从value获得event,请遵循以下(已测试):

配置您的API网关资源

enter image description here

enter image description here

/ api2 / {id}-GET-Integration Request 下,配置您的映射模板

enter image description here

执行请求https://123456.execute-api.my-region.amazonaws.com/stage/api2/123

Lambda

console.log(event.id)
callback(null, {
    id:event.id
});

CloudWatch

enter image description here

希望这会有所帮助