如果两个不同的终结点使用一个lambda,则lambda如何知道URL路径的各个部分?
如何从/zips
到/zip?zip_code=02140
知道一个lambda?
我可以使用event["queryStringParameters"]['zip_Code']
从lambda中获取URL查询字符串-/zip?zip_code=02140
,
但是如何知道是否从/zips
端点打电话给我?
我尝试使用event["pathStringParameters"]['zips']
为其创建了一个测试事件,但没有成功,未被识别。
我可以为每个特定资源使用一个lambda,但我也想知道其他方法,以及使用相同端点的方法如何显示其路径。
答案 0 :(得分:3)
如果我遵循您的要求,即您拥有为两个 API网关端点提供服务的一个 Lambda函数,那么我认为您有两个选择: / p>
path
参数headers
在Lambda代理集成中,API网关将整个客户端请求映射到后端Lambda函数的输入事件参数,如下所示:
因此,此HTTP请求如下:
POST /testStage/hello/world?name=me HTTP/1.1
Host: gy415nuibc.execute-api.us-east-1.amazonaws.com
Content-Type: application/json
headerName: headerValue
{
"a": 1
}
您将有空:
"message": "Hello me!",
"input": {
"resource": "/{proxy+}",
"path": "/hello/world",
"httpMethod": "POST",
"headers": {
"Accept": "*/*",
"Accept-Encoding": "gzip, deflate",
...
path
和headers
都可以满足您的需求。
个人,我建议设置一个自定义标头。这样,无论您的API路由是否发生变化,您的Lambda都会继续使用它。
答案 1 :(得分:1)
您可以在event
下的event["requestContext"]["path"]
对象中获取调用Lambda的路径
您可以在documentation for using AWS Lambda with API Gateway
中查看有关event
对象所包含内容的更多详细信息。