首页 文章

HTTP请求问题内部服务器错误

提问于
浏览
1

我遇到HTTP响应问题,给我一个状态代码:502,错误消息:内部服务器错误 . 我的设置是使用NodeJS编写的AWS Lambda,向作为其后端的另一个Lambda集成的AWS API Gateway发出HTTPS POST请求 .

奇怪的部分是Lambda充当API的后端接收所有POST请求就好并能够完美地执行其功能,但其回调响应其他Lambda并出现错误 .

下面是API网关侧lambda的回调

const done = (err, res) => callback(err, {
    statusCode: err ? JSON.stringify(err.code) : '200',
    body: err ? JSON.stringify(err.message) : JSON.stringify(res),
    headers: {
        'Content-Type': 'application/json',
    }
});

这是来自另一个lambda的代码,它发出了一个https POST请求

const req = https.request(options, (res) => {
                console.log('statusCode:', res.statusCode);
                console.log('headers:', res.headers);


                res.on('data', (d) => {
                    process.stdout.write(d);
                });

                res.on('end', function () {
                    console.log(JSON.stringify(body));
                });
            });

            req.on('error', (e) => {
                console.error(e);
                console.log("request error");
            });


            req.write(JSON.stringify(payload));
            console.log("req.end");
            req.end();

我觉得问题出现在这些代码块中,因为如果我更改Lambda集成API网关的回调以将响应硬编码为200状态代码,那么一切正常 .

2 回答

  • 0

    问题现在已解决 . 不需要更改代码,但问题是API网关端的Lambda的Node.Js源文件需要使用必要的依赖项或node_modules压缩,如此处所述http://docs.aws.amazon.com/lambda/latest/dg/nodejs-create-deployment-pkg.html

  • 0

    我在您的代码中看到的问题是,如果 err.code 为空或值无效,那么您将在API网关上获得502 . 您需要修复代码,以便它发送回有效状态代码的有效http响应 .

    如果您的状态代码无效或为空,那么它将向调用者抛出502,因为来自lambda的http响应无效 .

    希望能帮助到你 .

相关问题