Подключение AWS Lambda к внешнему экземпляру REDIS не работает - PullRequest
0 голосов
/ 09 апреля 2019

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

    })
};

Response from TEST Console

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

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

1 Ответ

0 голосов
/ 09 апреля 2019

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...