Тайм-аут соединения на AWS Lambda на стороннем сервере MYSQL - PullRequest
0 голосов
/ 03 ноября 2019

Я развернул свою лямбда-функцию через Serverless Framework. Когда я вызываю функцию локально, она работает нормально. Но в среде AWS Lambda невозможно установить соединение с MYSQL, который размещен на remotemysql.com. Каждый раз выдает ошибку тайм-аута.

Попытка увеличить тайм-аут, но ничего не работает

sequelize = new Sequelize(
    process.env.DB_NAME,
    process.env.DB_USER,
    process.env.DB_PASSWORD,
    {
        host: process.env.DB_HOST,
        dialect: "mysql",
        logging: false,
        connectTimeout: 60000
    }
);

sequelize
    .authenticate()
    .then(() => {
        logger.info("Database connection established");
        // do my work
        // some api calls to xys hosts outside servers
    })
    .catch(error => {
        logger.error("Database connection failed", {
            code: error.original.code,
            errno: error.original.errno
        });
        process.exit(1);
    });

Моя функция не находится внутри VPC, и ей разрешен доступ в Интернет, так как я убедился, что она возвращает ответы APIчто я делаю для некоторых других служб за пределами AWS.

Я не уверен, если это из-за TCP-соединения или что-то еще.

Пожалуйста, сообщите

1 Ответ

0 голосов
/ 04 ноября 2019

Хорошо, я выяснил, что стало причиной проблемы. Это было не из-за возможности подключения, а что-то не так с асинхронным обработчиком.

Мой обработчик был похож на

exports.handler = async () => { ... }

Я удалил async, и теперь он работает нормально.

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