【问题标题】:Passing path parameters to AWS Lambda将路径参数传递给 AWS Lambda
【发布时间】:2015-11-30 17:43:16
【问题描述】:

我对 AWS 还很陌生。我正在尝试将路径参数传递给我的 Lambda 函数,就像我发出请求一样:

PUT /users/{identity_id}

并传入body下面的参数

{
     "name": "shikasta_kashti",
     "age": 35
}

然后我无法在我的 lambda 函数中获得 event.identity_id。我可以访问event.nameevent.age 但不能访问event.identity_id

我想我必须做一些映射模板,所以我去了我的 PUT 方法并在集成请求中 -> 映射模板添加了 application/json,然后选择了映射模板(而不是输入直通)并输入了这个:

{
    "identity_id": "$input.params('identity_id')",
}

但我仍然无法在我的 Lambda 函数中获得 event.identity_id

【问题讨论】:

  • 愚蠢的问题,添加映射模板后,您是否部署了API?
  • @Ryan:是的,我确实在更改后进行了部署(添加了映射模板。)
  • 我刚刚设置了这个场景,它工作正常 - 所以集成中一定有一些偏差。您能否进行测试运行,然后查看日志中显示的“转换后的端点请求正文”和“转换前的端点响应正文”?

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


【解决方案1】:

对遇到此问题的人的迟到回应...

路径参数包含在event.pathParameters 下。 给定请求 PUT /users/1,您会看到一个 pathParameters 对象,如下所示:

{
  "identity_id": 1
}

如果您没有使用invoke 调用您的函数,您将在event.body 哈希中找到其余参数作为字符串。

要访问,您将执行以下操作:

const { name, age} = JSON.parse(event.body)

【讨论】:

  • event.pathParameters 仅在 API 方法中启用“Lambda 代理集成”时才存在。
猜你喜欢
  • 2017-12-30
  • 2020-10-15
  • 2016-04-10
  • 1970-01-01
  • 2019-07-05
  • 2011-10-12
  • 2021-11-03
  • 2023-03-13
  • 2021-12-02
相关资源
最近更新 更多