【发布时间】:2017-11-13 23:43:16
【问题描述】:
我无法在 lambda 中进行回调以在 API Gateway 中发送响应。我正在尝试构建一个与 MySQL 数据库交互的简单应用程序。相关代码sn-p如下。
问题在于,即使 validateToken 会返回错误并且我会看到 console.log 消息,但 done/callback 永远不会将预期的响应发送到 api 网关,并且会继续处理之后的任何代码。
exports.handler = (event, context, callback) => {
const done = (err, res) => callback(null, {
statusCode: err ? '400' : '200',
body: err ? err.message : JSON.stringify(res),
headers: {
'Content-Type': 'application/json',
},
});
if (event.path.match(/myApi\/workers\/*/)) {
// Validate Token
token.validateToken(pool, event.headers, function(err, result) {
if (result.status == 'error') {
console.log('Made it to here')
done({"message": "Invalid api-token"}, null);
} else {
// Proceed with fetching workers
}
});
}
}
任何帮助将不胜感激!
【问题讨论】:
-
该函数在 Lambda 测试控制台中有效吗?处理函数需要多长时间?
-
它的工作原理是它不会引发错误,但也不会像预期的那样返回“无效的 api-token”。我一直在通过控制台中的 API Gateway 测试器进行大部分测试。为此,还通过 Lambda 进行了测试。
-
很抱歉忘记回答您的“处理需要多长时间”的问题。它目前超时,因为它永远不会返回。
标签: node.js amazon-web-services lambda aws-lambda aws-api-gateway