![](/img/trans.png)
[英]Get endpoint from API Gateway for an AWS lambda in terraform
[英]How can an aws lambda know what endpoint called it from API Gateway?
如果两个不同的端点使用一个lambda,那么lambda如何知道URL路径的各个部分?
一个lambda如何知道它是从/zips
/zip?zip_code=02140
vs /zip?zip_code=02140
?
我可以使用event["queryStringParameters"]['zip_Code']
从lambda中获取URL查询字符串 - /zip?zip_code=02140
-
但我怎么知道是否从/zips
端点调用了我?
我尝试使用event["pathStringParameters"]['zips']
我创建了一个测试事件,但是没有用,无法识别。
我可以为每个特定资源使用一个lambda,但我也想知道其他方法以及那些使用相同端点的方法如何显示其路径。
如果我按照你要求的那样,即你有一个为两个 API网关端点提供服务的Lambda函数,那么我认为你有两个选择:
path
参数 headers
检查 从AWS文档 :
在Lambda代理集成中,API Gateway将整个客户端请求映射到后端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仍然会接收它。
您可以在event["requestContext"]["path"]
下获取在event
对象中调用Lambda的event["requestContext"]["path"]
您可以在使用AWS Lambda with API Gateway的文档中查看有关event
对象包含内容的更多详细信息
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.