Повторное использование подключения к базе данных через несколько AWS лямбда-вызовов - PullRequest
1 голос
/ 24 января 2020

У меня есть лямбда для подключения к SQL Серверной базе данных, подобной этой.

module.exports = async (event) => { 
const sqlClient = getConnection(); // connection to ms SQL
doMyWork(sqlConnection) // my core lambda logic
closeConnection(sqlConnection) // closing Connection
}

, когда когда-либо запускается лямбда, мой SQL Сервер подключается, работа завершена и соединение закрыто. Разве нет способа, которым я мог бы использовать объект соединения через несколько вызовов лямбды, чтобы я мог уменьшить а) нет. попыток подключения / отключения к серверу b) сократить общее время выполнения лямбды?

Я упомянул SQL Сервер здесь, поскольку я в настоящее время использую его здесь. как таковой, я должен подключиться к MySQL и Redis. Каков рекомендуемый способ подключения к базам данных (особенно к тем, которые поддерживают пулы)?

Пожалуйста, предложите.

1 Ответ

1 голос
/ 24 января 2020

Как правило, есть 2 способа решения этой проблемы.

  1. Сохраните пул соединений / соединений в переменной, которая сохраняется во всех вызовах Lambda. Как это сделать, зависит от используемой среды выполнения / языка. Пример с node.js здесь .

  2. Используйте внешнее приложение, которое долго работает и может сохранить пул соединений. Другая лямбда-функция не может этого сделать, и вам понадобится EC2 или другой долго работающий вычислительный экземпляр. К счастью, AWS недавно представил RDS Proxy , который является управляемой службой, которая достигает этого. Тем не менее, он все еще находится в режиме предварительного просмотра.

Для MSSQL / MySQL в RDS вы сможете использовать вариант 1 или 2, но для Redis вам придется использовать параметр 1.

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