Я хочу получить доступ к MongoDB изнутри AWS лямбда-функции, развернутой с помощью безсерверной инфраструктуры (serverless.com)
Существует пример структуры, как они ее открывают (https://github.com/serverless/examples/blob/master/aws-node-rest-api-mongodb/handler.js)
Но если я правильно понимаю код, они открывают и закрывают соединение для каждого запроса (соответствующий код примера):
const mongoString = ''; // MongoDB Url
const dbExecute = (db, fn) => db.then(fn).finally(() => db.close());
function dbConnectAndExecute(dbUrl, fn) {
return dbExecute(mongoose.connect(dbUrl, { useMongoClient: true }), fn);
}
module.exports.createUser = (event, context, callback) => {
dbConnectAndExecute(mongoString, () => (
user
.save()
.then(() => callback(null, {
statusCode: 200,
body: JSON.stringify({ id: user.id }),
}))
.catch(err => callback(null, createErrorResponse(err.statusCode, err.message)))
));
};
Мое предположение неверно и связь остается в живых? Если нет, то как будет выглядеть правильный шаблон для поддержания открытого соединения. Я знаю, что в AWS лямбда может быть глобальное состояние, но очевидно, что безсерверная структура удаляет все после одного запуска, так как ни одно состояние, заданное мной глобально, не сохраняется.