作者:canku | 来源:互联网 | 2023-01-12 17:11
我无法使用Lambda函数中的Node连接到MySQL数据库.我收到的错误是Task timed out after 4.00 seconds
.
有没有人有任何解决方案?
以下是我的州概况:
AWS RDS数据库是MySQL数据库.它不仅限于VPC(我可以使用MySQLWorkbench的主机/用户/密码进行连接).
我的Lambda函数的执行角色设置为将Lambda作为可信实体并给予AdministratorAccess.
在我的本地机器上,我安装了mysql模块,压缩了我的index.js和node_modules文件夹,并上传到我的Lambda函数.
我已经尝试将createConnection和connect函数放在处理程序中.我已经尝试将我的查询放在连接函数的回调函数中.我已经尝试将超时时间增加到10秒.
我的代码:
var mysql = require('mysql');
var cOnnection= mysql.createConnection({
host : 'amazon-string.rds.amazonaws.com',
user : 'myusername',
password : 'mypassword'
});
connection.connect();
exports.handler = (event, context, callback) => {
connection.query("SELECT * FROM table", function(err, rows, fields) {
console.log("rows: " + rows);
callback(null);
});
};
Kannaiyan..
7
将超时时间增加到一分钟.这可能是由于lambda函数的冷启动.
只有您的第一个呼叫需要花费时间,连续呼叫应该非常快,因为您正在重复使用相同的连接.
此外,通过更高的超时,并不意味着您将被收取超时费用,您将只收取Lambda运行时的费用.
另外,为了加快冷启动时间,您可以将脚本包装好,
http://docs.aws.amazon.com/sdk-for-Javascript/v2/developer-guide/webpack.html
还有一个问题被注意到,
var mysql = require('mysql');
var cOnnection= mysql.createConnection({
host : 'amazon-string.rds.amazonaws.com',
user : 'myusername',
password : 'mypassword'
});
connection.connect();
exports.handler = (event, context) => {
connection.query("SELECT * FROM table", function(err, rows, fields) {
console.log("rows: " + rows);
context.succeed('Success');
});
};
希望能帮助到你.
1> Kannaiyan..:
将超时时间增加到一分钟.这可能是由于lambda函数的冷启动.
只有您的第一个呼叫需要花费时间,连续呼叫应该非常快,因为您正在重复使用相同的连接.
此外,通过更高的超时,并不意味着您将被收取超时费用,您将只收取Lambda运行时的费用.
另外,为了加快冷启动时间,您可以将脚本包装好,
http://docs.aws.amazon.com/sdk-for-Javascript/v2/developer-guide/webpack.html
还有一个问题被注意到,
var mysql = require('mysql');
var cOnnection= mysql.createConnection({
host : 'amazon-string.rds.amazonaws.com',
user : 'myusername',
password : 'mypassword'
});
connection.connect();
exports.handler = (event, context) => {
connection.query("SELECT * FROM table", function(err, rows, fields) {
console.log("rows: " + rows);
context.succeed('Success');
});
};
希望能帮助到你.