当前位置: 首页 > 知识库问答 >
问题:

AWS LAMBDA api网关错误“格式错误的LAMBDA代理响应”状态错误502

弓方伟
2023-03-14

我试图在aws.lamda-service上的node.js中创建函数,并在函数控制台进行测试,效果良好,但当调用api时,它不能导出到外部,api网关错误“malformed Lambda proxy response”状态错误502

exports.handler = (event, context, callback) => {
    event.options = {
        'method': 'GET',
        'hostname': 'app.respond.io',
        'path': '/api/v1/contact/YXM2UJRaFBEdz09',
        'headers': {
            'Authorization': 'Bearer 529485f027b408ae91799eec57a53e0ac4',
            'Content-Type': 'Application/json'
        },
        'maxRedirects': 20
    }; 
    const req = https.request(event.options, (res) => {
        let body = '';
        console.log('Status:', res.statusCode);
        console.log('Headers:', JSON.stringify(res.headers));
        res.setEncoding('utf8');
        res.on('data', (chunk) => body += chunk);
        res.on('end', () => {
            console.log('Successfully processed HTTPS response');
            if (res.headers['content-type'] === 'application/json') {
                body = JSON.parse(body);
                body = body.data.custom_fields.discount;
                body = body.replace("%","");
             }
            callback(null, body);
       });
    });
    req.on('error', callback);
    req.write(JSON.stringify(event.data));
    req.write(JSON.stringify(event.data));
    req.end();
};

有什么想法吗

共有1个答案

韦绍晖
2023-03-14

我认为弹出这个错误是由于您的响应没有正确设置格式,或者更确切地说,回调没有设置在结尾。您需要得到以下答复:

var response = {
        "statusCode": 200,
        "headers": {
            "my_header": "my_value"
        },
        "body": JSON.stringify(responseBody),
        "isBase64Encoded": false
    };
callback(null, response);

你也可以参考这个SO,它有对同一问题的解释。

 类似资料:
  • 我正在尝试使用AWS lambda设置一个hello world示例并通过api网关提供它。我单击了“创建Lambda函数”,它设置了api网关并选择了空白函数选项。我添加了在AWS网关上找到的lambda函数入门指南: 问题是,当我向它发出GET请求时,它会返回502响应{“message”:“Internal server error”}。日志显示“由于配置错误,执行失败:Lambda代理响应

  • 问题内容: 我正在尝试使用AWS Lambda建立一个hello world示例,并通过api网关为其提供服务。我单击了“创建Lambda函数”,这将设置api通道并选择了Blank Function选项。我添加了在AWS网关入门指南中找到的lambda函数: 问题是,当我向它发出GET请求时,它返回了502响应。并且日志显示“由于配置错误,执行失败:Lambda代理响应格式错误”。 问题答案:

  • 我试图用AWS lambda建立一个hello world示例,并通过api网关为其服务。我点击了“创建一个Lambda函数”,它设置了api网关,并选择了空白函数选项。我添加了在AWS网关入门指南上找到的lambda函数: 问题是,当我向它发出GET请求时,它返回502响应。日志上写着“由于配置错误执行失败:Lambda代理响应不正确”。

  • 我用无服务器创建了一个lambda函数。我用lambda控制台测试了lambda函数,它工作得很好。但是,在转换之前,我得到了endpoint响应体:null和执行失败,原因是配置错误:当我试图为该函数调用APIendpoint时,错误的Lambda代理响应。 并且调用了查询字符串参数的endpoint:。 我不知道为什么我的函数已经以这里的格式返回了响应,但仍然得到了格式错误的Lambda代理响

  • 我有以下来自数据库的路由配置 所有代理服务都将返回公共响应json以防出现错误场景

  • 我正在从AWS API网关调用AWS Lambda函数。返回的JSON需要压缩,因为它有时会变得太大(身体大小太大等)。但是,我在通过API网关获取响应时遇到了一些问题。这是我的Java代码: 我已经检查了Base64输出,它似乎工作正常(粘贴了它)https://www.base64decode.org/). 此外,当我与Postman核对时,我得到一个二进制blob,如果我将响应保存为以.gz