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

我有一个HTTP响应问题给我一个状态代码:502,并出现错误消息:内部服务器错误。 我的设置是用NodeJS编写的AWS Lambda,向与其他Lambda集成的AWS API网关发出HTTPS POST请求作为其后端。

奇怪的部分是作为API后端的Lambda收到所有的POST请求,并且能够完美地执行它的function,但是它的callback响应了另一个Lambda错误。

以下是API网关端的lambdacallback

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网关的callback以将响应硬编码为200状态代码,则一切正常。

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

如果你的状态码是无效的或者是空的,那么它会向调用者抛出502,因为来自lambda的http响应是无效的。

希望能帮助到你。

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