Подключение AWS Lambda к внешнему экземпляру REDIS не работает

Я пишу функцию для подключения к экземпляру REDIS в REDISLABS. Я подключил шлюз 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
        };

    })
};

У меня настроен VPC и группа безопасности со всеми включенными портами (для тестирования) для исходящего соединения.

Может кто-нибудь подсказать, где я ошибаюсь?

1 ответ

Вы пытаетесь вернуть результат из ваших обратных вызовов, а не из самого обработчика. Я не уверен, как это сделать с 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
        });
    });
};

Вероятно, вам следует добавить дополнительную обработку ошибок в случае возникновения исключения, чтобы вы не получили пустой ответ в этом случае.

Другие вопросы по тегам