Lambda Redshift查询始终至少需要10秒左右的时间

时间:2019-05-07 17:06:50

标签: node.js amazon-web-services aws-lambda amazon-redshift

我有一个查询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寄予厚望吗?这是一个面向客户的应用程序,这些等待时间是不可接受的。

0 个答案:

没有答案