繁体   English   中英

aws lambda如何知道从API网关调用它的端点?

[英]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函数,那么我认为你有两个选择:

  1. 使用path参数
  2. 设置自定义标头并在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",
      ...

pathheaders都可以满足您的需求。

就个人而言 ,我建议设置一个自定义标题。 这样,无论您的API路由发生变化,您的Lambda仍然会接收它。

您可以在event["requestContext"]["path"]下获取在event对象中调用Lambda的event["requestContext"]["path"]

您可以在使用AWS Lambda with API Gateway文档中查看有关event对象包含内容的更多详细信息

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM