为了账号安全,请及时绑定邮箱和手机立即绑定

如何从 AWS lambda 上的 API 获得正确响应

如何从 AWS lambda 上的 API 获得正确响应

一只甜甜圈 2021-12-12 10:03:47
这是我第一次向 Stack-Overflow 社区征求意见。几天以来,我一直在学习使用与 GETEWAY 相连的 AWS lambda 服务。我需要对 API 执行 GET,但问题是我经常收到空响应。这是我的带有免费访问 API 的代码示例:var getApi= async function(event) {        var x =  await axios.get(url)       }var getResponse = async function(){  var data= await getApi()  if (data.status ==200){       return data  }}exports.handler = async function() {    return getResponse().then(res => {        const response = {            statusCode: 200,            body: JSON.stringify(res),         };        return response    }).catch(error => { return error})};非常感谢您的帮助,
查看完整描述

3 回答

?
慕哥9229398

TA贡献1877条经验 获得超6个赞

这是因为 node.js 异步调用。您的函数在异步调用返回之前完成运行。我修复了一些代码行。我希望这对你有帮助。


const getApi= async function() {

   return await axios.get(url)

}


const getResponse = async function(){

    const data= await getApi()

    if (data.status ==200){

        return data

    }

}


exports.handler = async function() {

    return await getResponse().then(res => {

        const response = {

            statusCode: 200,

            body: JSON.stringify(res), 

        }

        return response

    }).catch(error => console.error(error))

}


查看完整回答
反对 回复 2021-12-12
?
qq_笑_17

TA贡献1818条经验 获得超7个赞

我建议使用console.log()整个文件进行调试。默认情况下,您应该能够在 Cloudwatch 中看到对这些控制台日志的响应:)

在此处阅读更多信息:

https://docs.aws.amazon.com/lambda/latest/dg/monitoring-functions-logs.html


查看完整回答
反对 回复 2021-12-12
?
慕虎7371278

TA贡献1802条经验 获得超4个赞

我自己最近遇到了这个问题。解决办法是:

  1. 如果您在 AWS 网关中使用 Lambda 作为授权方,则 Lambda 应返回一个包含 principalId、policyDocument 和上下文的 JSON 对象。

  2. 上下文是一个映射,您可以在其中添加您自己的自定义变量,例如字符串、数字和布尔值。

JSON 对象的全部内容将返回给网关。查看此文档:https : //docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-lambda-authorizer-output.html

我还有一篇关于如何通过 Cloudformation YAML 文件配置网关的非常详细的 Stackoverflow 帖子:AWS API Gateway with Lambda Authorizer


查看完整回答
反对 回复 2021-12-12
  • 3 回答
  • 0 关注
  • 177 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信