【问题标题】:Get response body from API Gateway call in Lambda function从 Lambda 函数中的 API Gateway 调用获取响应正文
【发布时间】:2019-08-10 09:21:13
【问题描述】:

我知道如何设置 API Gateway 并将其链接到 Lambda 函数。我不知道,并且我已经搜索过,是如何从 Lambda 中的 API 网关获取响应正文。

我如何获得它?我在 AWS 控制台中测试 API 时看到了它。

【问题讨论】:

  • 你的意思是从要在lambda函数中访问的URL请求中获取url的查询参数和/或body参数吗?
  • 我想知道如何做到这两点

标签: amazon-web-services aws-lambda aws-api-gateway


【解决方案1】:

我认为您必须设置身体映射模板。转到网关 API -> 您创建的 API -> 资源 -> 方法(获取/发布 .. ) -> 集成请求 -> 正文映射模板 -> 添加映射模板 Content Type: application/json

{
  "body" : $input.json('$'),
  "headers": {
    #foreach($header in $input.params().header.keySet())
    "$header": "$util.escapeJavaScript($input.params().header.get($header))" #if($foreach.hasNext),#end

    #end
  },
  "method": "$context.httpMethod",
  "params": {
    #foreach($param in $input.params().path.keySet())
    "$param": "$util.escapeJavaScript($input.params().path.get($param))" #if($foreach.hasNext),#end

    #end
  },
  "query": {
    #foreach($queryParam in $input.params().querystring.keySet())
    "$queryParam": "$util.escapeJavaScript($input.params().querystring.get($queryParam))" #if($foreach.hasNext),#end
    #end
  }  
} 

您应该能够访问 Lambda 中的变量

params.Item = event.query; 访问查询参数

查看这些链接以获取更多信息 http://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-mapping-template-reference.html

https://kennbrodhagen.net/2015/12/06/how-to-create-a-request-object-for-your-lambda-event-from-api-gateway/

如果有帮助,请告诉我。

【讨论】:

  • 没错。我在测试时看到了响应正文。但是,如果我从外面调用它,我会得到以下信息: {"message":"Forbidden"}
  • 你成功了吗?您在哪里看到消息:在 Lambda 函数中或在浏览器的响应中被禁止?
  • 我在浏览器的响应中看到了
  • 没关系,我让它工作了。我必须部署 API。现在,我可以看到响应。呜呜呜!!!非常感谢。
  • 太棒了!编码愉快!
猜你喜欢
  • 1970-01-01
  • 2022-10-14
  • 2020-05-28
  • 2018-08-28
  • 2020-06-24
  • 2021-10-13
  • 1970-01-01
  • 2023-03-08
  • 2020-08-21
相关资源
最近更新 更多