我无法使用AWS Lambda与Node.js连接到MySQL。
我曾尝试为AWS MySQL和Lambda配置安全组。当我使用var dataStream = File.OpenRead(filePathWoFileName + request.fileName);
//send out
HttpResponseMessage httpResponseMessage = Request.CreateResponse(HttpStatusCode.OK);
httpResponseMessage.Content = new StreamContent(dataStream);
时,它会将数据库中的正确响应显示为console.log
,但是当我尝试测试时,它没有显示正确的响应。
下面是日志和the data from db : rk
文件和日志。有人可以指导我吗?
index.js(我已经更新了我的代码如下):
index.js
错误:
var mysql = require('mysql');
var pool = mysql.createPool({
host : 'mydbinstancelamda.connqa9taxeg.us-east-1.rds.amazonaws.com',
user : 'admin',
password : 'password',
database : 'dbname'
});
exports.handler = (event, context, callback)=> {
pool.getConnection(function(err, connection) {
if (err) throw err;
var queryString = "SELECT emp_name from employee where emp_name='rk'";
connection.query(queryString, function(err, rows, fields) {
if (err) throw err;
console.log("the data from db : " + rows[0].emp_name);
callback(null);
connection.release();
});
});
};
答案 0 :(得分:1)
尝试从lambda控制台更改lambda执行超时,如下图所示:
确保RDS MySQL DB的安全组允许来自Lambda安全组的连接,如果有相同的话,那么你就可以了。
<强>更新强> MySQL返回响应后需要调用回调。
// change following line:
exports.handler = (event, context, req,res,callback)=> {
// To this line:
exports.handler = (event, context, callback)=> {
工作完成后,你需要回调告诉lambda工作是否完成:
callback(undefined, result);
答案 1 :(得分:1)
我按照@Dilip Kola给出的指示,我的错误是没有关闭游泳池,处理程序参数!...
我的完整代码现在看起来像是:
var mysql = require('mysql');
var pool = mysql.createPool({
host : 'url for mysql ',
user : 'username ',
password : 'paswrod ',
database : 'database-name'
});
exports.handler = (event, context, callback)=> {
pool.getConnection(function(err, connection) {
if (err) throw err;
var queryString = "SELECT emp_name from employee where emp_name='rk'";
connection.query(queryString, function(err, rows, fields) {
if (err) throw err;
console.log("the data from db : " + rows[0].emp_name);
connection.release();
pool.end();
callback(null,rows[0].emp_name);
});
});
};
最后我得到了我的输出: