Время ожидания AWS Lambda с ошибкой соединения - PullRequest
0 голосов
/ 24 октября 2018

У меня есть AWS Lambda, который запускается каждые пять минут.Лямбда создаст соединение с базой данных RDS внутри моего VPC и выполнит несколько запросов.

Лямбда будет успешно запущена три раза, примерно 15 минут или около того, но затем я получаю ошибку тайм-аута:

Тайм-аут задачи через 600.10 секунд

После этой ошибки тайм-аута, при следующем запуске Lambda я больше не могу подключиться к своей базе данных RDS.Я получаю следующую ошибку тайм-аута:

Ошибка: подключить ETIMEDOUT

В данный момент я довольно озадачен и мог бы обратить на это внимание:

'use strict';

const mysql = require('mysql');
const util = require('util');

const {
  fetchQuery, 
  insertQuery,
  updateQuery,
} = require('./queries');

const {
  getInsertValues, 
  getUpdateValues,
} = require('./utils');

const connection = mysql.createConnection({
  host: process.env.DB_HOST,
  user: process.env.DB_USER,
  password: process.env.DB_PASSWORD,
  database: process.env.DB_NAME,
});

// node native promisify
const query = util.promisify(connection.query).bind(connection);

connection.connect();

module.exports.scan = async (event, context, callback) => {
  let results = await query(fetchQuery);

  console.log(`found ${results.length} forms that are scheduled to be filed`);

  if (results.length > 0) {
    const insertValues = getInsertValues(results);
    const updateValues = getUpdateValues(results);

    try {
      console.log(`creating user_tasks`);
      await query(insertQuery, [insertValues]);

      console.log(`updating next_scheduled dates`);
      await query(updateQuery, [updateValues]);

      callback(null, 'successfully updated form next_scheduled')
    } catch (err) {
      console.error('error creating user_tasks')
      callback(err, 'error creating user_tasks')
    }
  }
}

1 Ответ

0 голосов
/ 24 октября 2018

Попробуйте закрыть соединение с базой данных, как только вы закончите использовать ее, у меня ранее была похожая ошибка, потому что открытое соединение поддерживало работу Lambda до истечения времени ожидания

...