【发布时间】:2019-01-25 23:52:31
【问题描述】:
我的 HTTP 响应出现问题,给我一个状态代码:502,错误消息:内部服务器错误。我的设置是一个用 NodeJS 编写的 AWS Lambda,它向与另一个 Lambda 集成的 AWS API 网关发出 HTTPS POST 请求,作为其后端。
奇怪的是,作为 API 后端的 Lambda 可以很好地接收所有 POST 请求,并且能够完美地执行其功能,但它的回调以错误响应另一个 Lambda。
下面是 API Gateway 端 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 状态代码,那么一切正常。
【问题讨论】:
-
您的 API Lambda 有一些错误,您需要调试它。检查日志。见:docs.aws.amazon.com/lambda/latest/dg/…
-
首先,检查 Cloudwatch 上的错误。接下来,检查您的映射模板(如果您没有使用 Lambda-Proxy 集成)。
标签: node.js amazon-web-services lambda https aws-api-gateway