Amazon web services 如何创建映射模板以将路径参数映射到apigateway中的lambda函数?
我正在使用serverless部署API网关和lambda,使用Amazon web services 如何创建映射模板以将路径参数映射到apigateway中的lambda函数?,amazon-web-services,aws-lambda,aws-api-gateway,Amazon Web Services,Aws Lambda,Aws Api Gateway,我正在使用serverless部署API网关和lambda,使用lambda集成。以下是以下代码: myLambda: ... events: - http: path: customer/{id} method: delete integration: lambda request: parameters: paths: id: true
lambda集成
。以下是以下代码:
myLambda:
...
events:
- http:
path: customer/{id}
method: delete
integration: lambda
request:
parameters:
paths:
id: true
template:
text/plain: "$input.params('id')"
它创建一个
delete
API,根据path参数中指定的id
删除客户。我想将路径id
映射到其处理程序中myLambda的事件参数。但是上面的代码不起作用,因为lambda从API网关接收整个http请求。如何将id
参数映射到lambda中的事件参数?使用API网关和lambda函数时,有两个选项:
为了使用Serverless进行设置,请查看中的“Lambda集成”部分:我认为ApiGateway事件本身应该包含查询/路径参数键值对,如果使用上面提到的@Caldazar的Lambda代理方法,您可以直接从事件中查询参数 例如,假设您有一个URL 您只需从处理程序中检索以下值:
token = event['queryStringParameters']['token']
uid = event["queryStringParameters"]['uid']
编辑:
请按照以下步骤进行Lambda集成:
转到各自的API资源方法并单击集成请求部分
找到集成请求的映射模板区域并将其打开。为application/json内容类型添加新的映射模板。您需要将组合框中的类型从“Input passthrough”更改为“Mapping Template”
然后将以下JSON片段粘贴到模板中:
{
"id" : "$input.params('id')"
}
这样,您将不会在lambda中接收整个事件对象,而只接收在请求中发送的path参数
一些参考资料:&我在API网关中设置了
lambda集成
。问题是如何将path参数映射到lambda事件?我使用的是lambda集成
,因此我不希望在lambda代码中看到整个http请求。如何将path参数映射到lambda事件?@Joeyizhao我已经更新了答案,请检查并让我知道它是否适用于您我可以让它工作,但lambda中的事件仍然包括请求中的所有内容,如正文
,标题
等。我真正想要的是在lambda中仅获取id作为字符串参数。