我有一个查询Redshift数据库的简单Lambda函数。如果我通过与sqlWorkbench的直接连接进行查询,查询本身将花费<1s。通过Lambda函数进行查询时,同一查询的时间总是> 10s。
Redshift数据库位于内部 一个可以访问互联网的VPC。 Lambda函数位于VPC的外部。
这是简化的lambda代码:
const db = require('./functions/dbFunctions');
const database = require('./config/database');
var handler = function (event, context, callback) {
callEndpoint(event, callback, database);
};
var callEndpoint = function (event, callback, database) {
var method = event.context['resource-path'].substring(1).toUpperCase();
switch (method) {
case "WEB/GETCLIENTSALT":
db.getClientSalt(event, callback, database);
break;
}
};
module.exports = {
handler: handler,
callEndpoint: callEndpoint
};
dbFunctions:
var getClientSalt = function (event, callback, db) {
var body = event['body-json'];
var userDet = {
userEmail: body.userEmail
};
var respSalt = {
result: "",
clientSalt: ""
};
var sqlSalt = `SELECT salt from user_table WHERE user_email = $1 limit 1`;
db.mobileAdhoc().one(sqlSalt, [userDet.userEmail])
.then(result => {
// Handle Success
})
.catch(() => {
// Handle Error
});
};
module.exports = {
getClientSalt: getClientSalt
};
我已经阅读了有关lambda冷启动的信息,但是即使连续调用多次,上述函数也至少需要10s的时间。我什至在index.js中添加了代码,以检查database.js仅初始化一次并在连续调用中重用(验证lambda是否保持温暖)。
是否缺少一些简单的配置?我对Lambda-> Redshift寄予厚望吗?这是一个面向客户的应用程序,这些等待时间是不可接受的。