Я протестировал функцию nodejs из локальной системы, чтобы получить результат из инстанса RDS, но когда я изменяю тот же код для лямбда-функции AWS и развертываю, он не возвращает результата.
Я настраиваю лямбду в том же VPC сЭкземпляр RDS.Я даже настраиваю ту же группу безопасности и подсети.Я настраиваю интернет-проход в публичной подсети.Я проверил входящие и исходящие правила для порта для работы.
var mssql = require('mssql');
var log = require('log');
var mssqlConfig = {
user: 'absroot',
password: '',
server: 'flexedgedbadmin.ctsvkjsupcl4.ap-southeast-2.rds.amazonaws.com',
instanceName: 'flexedgedbadmin.ctsvkjsupcl4.ap-southeast-2.rds.amazonaws.com',
database: 'FLEXEDGE_PI_dev',
port: 1433,
options: {
encrypt: true
}
};
exports.handler = function(event, context, callback) {
context.callbackWaitsForEmptyEventLoop = false;
var a = "abc@gmail.com";
var connection = mssql.connect(mssqlConfig, function(err) {
if (err) {
context.fail();
connection.close();
console.log("error during connection %s", err);
callback(err);
} else {
console.log("Connection successful");
context.succeed('Succeed');
}
});
var jsonArray = {};
new mssql.Request().query('select top 2 * from abc where username=' + '\'' + a + '\'').then(function(recordsets) {
if (recordsets.recordset.length > 0) {
for (var i = 0; i < recordsets.recordset.length; i++) {
// console.log(" Query result i " + (i + 1));
log('json payload is ' + JSON.stringify(recordsets.recordset[i]));
var payLoadData = JSON.stringify(recordsets.recordset[i]);
console.log('json payload of activityid ' + JSON.parse(payLoadData).ActivityID);
jsonArray.append(payLoadData);
}
} else
log("No records found to process. Wait for next invocation.......");
//callback(jsonArray);
}
).catch(function(err) {
log('query execution failed ' + err);
});
console.log('details in jsonArray are ' + jsonArray);
console.log('details in jsonArray are ' + JSON.stringify(jsonArray));
const res = { statusCode: 200, body: jsonArray };
connection.close();
callback(null, res);
};