Node.js AWS Lambda NodeJS对SQL Server的调用既不返回数据也不返回错误
我正试图使用lambda函数连接到AWS托管的SQL server,但当我在lambda管理控制台中测试它时,或通过API调用,我通过该函数获得了Node.js AWS Lambda NodeJS对SQL Server的调用既不返回数据也不返回错误,node.js,amazon-web-services,aws-lambda,Node.js,Amazon Web Services,Aws Lambda,我正试图使用lambda函数连接到AWS托管的SQL server,但当我在lambda管理控制台中测试它时,或通过API调用,我通过该函数获得了test here 这似乎表明该调用未命中错误且未返回任何记录。因为我知道表中有数据,所以我至少预期会有一个错误,或者理想情况下是数据。如何对此进行故障排除 使用CloudWatch控制台输出,我看到“calledrdsquery”,但在这一点之后什么都没有 var sql = require("mssql"); // config for your
test here
这似乎表明该调用未命中错误且未返回任何记录。因为我知道表中有数据,所以我至少预期会有一个错误,或者理想情况下是数据。如何对此进行故障排除
使用CloudWatch控制台输出,我看到“calledrdsquery”,但在这一点之后什么都没有
var sql = require("mssql");
// config for your database
var config = {
user: 'xxuser',
password: 'xxxx',
server: 'mydns',
database: 'Antonio'
};
module.exports.rdsquery = async event => {
console.log('called rdsquery')
try{
// connect to your database
await sql.connect(config, function (err) {
console.log('connected')
if (err)
console.log('rdsquery: '+err)
//return {statusCode: 200, headers: {'Access-Control-Allow-Origin': '*'},body: JSON.stringify('sql connect err: '+err)};
// create Request object
var request = new sql.Request();
console.log('rdsquery: request crated')
// query to the database and get the records
request.query('select CustomerNo from FROMMAS_AR_Customer', function (err, recordset) {
if (err)
console.log('rdsquery-sql: '+err)
//return {statusCode: 200, headers: {'Access-Control-Allow-Origin': '*'},body: JSON.stringify('sql err: '+err)};
// send records as a response
console.log('logging recordset')
console.log(recordset);
return {statusCode: 200, headers: {'Access-Control-Allow-Origin': '*'},body: JSON.stringify(recordset)};
//return {statusCode: 200, headers: {'Access-Control-Allow-Origin': '*'},body: JSON.stringify(recordset)};
});
});
}
catch(e)
{
console.log('rdsquery-catch: '+e)
return {statusCode: 200, headers: {'Access-Control-Allow-Origin': '*'},body: JSON.stringify('ERR: '+e)};
}
//return {statusCode: 200, headers: {'Access-Control-Allow-Origin': '*'},body: JSON.stringify('test here')};
};
请注意,我不是LAMBDA专家。任何这些信息都可能是完全错误的。如果您发现我如何解决问题的问题,我将不胜感激 因此,经过大量挖掘,我发现我的lambda配置存在几个问题:
无法连接MYIP
AWSLambdaVPCAccessExecutionRole
你检查过AWS cloudwatch日志了吗?您应该控制台错误,而不是将它们返回到帮助中debug@Adiii我在代码中添加了控制台日志,似乎连接从未建立,故障不可见ms服务器在哪里?是否可以从lambda访问它?假设
rdsquery
是您的处理程序函数,您是否仍需要以某种方式调用lambda处理程序的callback
?是的,在进一步挖掘之后(当我将require mssql
放入try catch中时),我会得到一个“module not found error”。看起来我没有正确地将它加载到lambda中