Node.js aws lambda函数查询数据库超时
尝试使用Lambda函数连接PostgreSQL数据库,两者都驻留在AWS中,但似乎无法建立连接;下面是my node(6.10)函数的一个片段:Node.js aws lambda函数查询数据库超时,node.js,postgresql,amazon-web-services,lambda,Node.js,Postgresql,Amazon Web Services,Lambda,尝试使用Lambda函数连接PostgreSQL数据库,两者都驻留在AWS中,但似乎无法建立连接;下面是my node(6.10)函数的一个片段: exports.handler = (event, context, callback) => { var pg = require("pg"); const connectionStr = "pg://user:pwd@host:5432/dbname"; pg.connect(connectionStr, funct
exports.handler = (event, context, callback) => {
var pg = require("pg");
const connectionStr = "pg://user:pwd@host:5432/dbname";
pg.connect(connectionStr, function(err, client){
if(err) {
console.log("A connection error occurred");
} else {
console.log("Connection established");
var query = client.query("select * from makes", function(err, data) {
if(err) {
console.log("An error occurred");
console.log(err);
} else {
console.log("Succeed");
console.log(data);
}
});
query.on("end", function(){
console.log("Close");
})
}
})
};
我试过几件事:
1) 在本地机器上测试,工作良好
2) 已经设置了lambda功能的VPC和子网,与我的数据库实例仪表板上显示的相同
3) 试图将超时时间增加到20秒零1分钟,但仍然超时
4) 检查了日志文件,该文件仅显示以下内容:注意:没有消息显示连接失败或成功:
2017-06-15T01:06:26.173Z ce971015-5166-11e7-b733-0fe749dc9c4a任务
20.00秒后超时
有什么问题吗?有人有什么想法吗?提前感谢。数据库的安全组需要允许Lambda关联的安全组进行访问。@Michael sqlbot感谢您的回复。听起来像是我错过了什么。你有关于如何做的参考资料吗?而且你从不释放连接,这将导致立即的连接泄漏,你的代码将冻结。如果您想避免干扰连接,请改用。@vitaly-t您好,谢谢您的回复。我正在尝试使用
pgpromise
模块;但是lambda仍然超时,我可以在postgresql事件中看到连接日志文件,这意味着应该已经建立了连接。如何使用pg promise释放连接?我尝试了db.query.then.catch
模式。这会释放连接吗?抱歉,javascript还是新手。