amazon-web-services - 如何创建映射模板以将路径参数映射到 apigateway 中的 lambda 函数?
问题描述
我正在使用无服务器部署 API 网关和 lambda,使用lambda integration
. 下面是基础代码:
myLambda:
...
events:
- http:
path: customer/{id}
method: delete
integration: lambda
request:
parameters:
paths:
id: true
template:
text/plain: "$input.params('id')"
它根据路径参数中的指定创建一个delete
API 来删除客户。id
我想path id
在其处理程序中将其映射到 myLambda 的事件参数。但是上面的代码不起作用,lambda 从 API 网关接收整个 http 请求。如何将id
参数映射到 lambda 中的事件参数?
解决方案
我相信 ApiGateway 事件本身应该包含该查询/路径参数键值对,如果您使用上面提到的 @Caldazar 的 Lambda 代理方法,您可以直接从事件中查询您的参数。
例如,假设你有一个 URL
https://example.execute-api.us-west-2.amazonaws.com/prod/confirmReg?token=12345&uid=5
您可以简单地从您的处理程序中检索如下值:
token = event['queryStringParameters']['token']
uid = event["queryStringParameters"]['uid']
编辑:
请按照以下步骤进行 Lambda 集成:
转到您各自的 API 资源方法,然后单击集成请求部分
找到集成请求的映射模板区域并将其打开。为 application/json Content-Type 添加一个新的映射模板。您需要将组合框中的类型从“输入直通”更改为“映射模板”。
然后将以下 JSON 片段粘贴到模板中:
{
"id" : "$input.params('id')"
}
这样,您最终不会在 lambda 中收到整个事件对象,而只会收到在您的请求中发送的路径参数。
推荐阅读
- python - 球在 pygame 窗口的边缘反弹,需要一段时间才能出来
- openlayers - 使用 Geoserver 和 Openlayers 6 显示 WFS 图层
- node.js - 在本地部署和提供 React 应用程序构建后,服务器端无法工作
- python - 上传视频和缩略图 - YouTube Data API Python
- r - 使用 Rselenium 从下拉菜单中获取值
- flutter - 在颤动中访问提供程序设置器时不存在获取函数返回错误
- html - 在 iframe 中隐藏垂直滚动
- amazon-sqs - 带有 stepfunction 的 FIFO 主题需要 MessageGroupId 参数
- java - android套接字在模拟器上工作,但在我的真实设备上不工作
- python - 即使存在依赖项,也安装缺少的依赖项?