Лямбда была разработана для serverless
архитектуры, это означает, что лямбда-функция может go переводить в "спящий" режим, если она не вызывается.
Затем, если вы вызываете вашу лямбда-функцию последовательно, переменные вне обработчика были кэшированы.
Я покажу вам, как я нахожусь:
const initInstall = async () => {
const parsedEnv = await parseEnv(process.env);
return new InstallController(parsedEnv);
};
let install = null;
exports.handler = async (event, context, callback) => {
if (!install) {
install = await initInstall();
} else {
// Hit from "cache"
}
return install.handle(event, context, callback);
};
Я рефакторинг const controller
в initInstall
функция, это асин c функция.
И создайте переменную, которая называется install
для «кэширования» InstallController
объекта.
В функции handler
просто проверьте, существует ли install
или нет, если нет, назначьте результат от initInstall
до install
.