繁体   English   中英

AWS Lambda连接到外部REDIS实例无法正常工作

[英]AWS Lambda connection to external REDIS instance not working

我正在编写一个函数来连接REDISLABS上的REDIS实例。 我附加了一个API网关来调用此代码。 奇怪的是,虽然测试它来自API网关测试控制台,但它无法正常工作。 不幸的是,我无法在测试控制台上看到任何错误。

我已经将代码移动到本地机器作为普通的NodeJS代码,它没有任何问题。 我的代码看起来像这样:

exports.handler = async (event) => {
    var client = require('redis').createClient({
        host: 'redis-XXXXXXXX.c10.us-east-1-2.ec2.cloud.redislabs.com',
        password: 'XXXXXXXXXXXXX',
        port: '14021'
        });

    client.on('connect', () => {
        return {
            status: 200,
            message: 'connected'
        }
    });

    client.on('error', (error)=> {

        return {
            status: 404,
            message: 'Something went wrong:'+ error
        };

    })
};

来自TEST控制台的回复

我配置了一个VPC,并且安全组的所有端口都启用了(用于测试)出站连接。

有人可以建议我哪里出错吗?

您试图从回调而不是从处理程序本身返回结果。 我不确定如何使用async ,但没有它你可以这样做:

exports.handler = (event, context, callback) => {
    var client = require('redis').createClient({
        host: 'redis-XXXXXXXX.c10.us-east-1-2.ec2.cloud.redislabs.com',
        password: 'XXXXXXXXXXXXX',
        port: '14021'
    });

    client.on('connect', () => {
        callback(null, {
            status: 200,
            message: 'connected'
        });
    });

    client.on('error', (error)=> {
        callback(null, {
            status: 404,
            message: 'Something went wrong:'+ error
        });
    });
};

如果抛出异常,您可能应该添加更多错误处理,因此在这种情况下您不会得到空响应。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM