Как предотвратить дублирование кода в лямбде?
У меня есть некоторые функции Nodejs, которые содержат дублированные блоки кода. Я знаю, что мы можем использовать лямбда-слой для разделяемых библиотек, но я хотел знать, можно ли тоже обмениваться кодами? например один из дублированного кода показан ниже
const connection = mysql.createPool({
host: process.env.DB_HOST,
database: process.env.DB_NAME,
user: process.env.DB_USER,
port: process.env.DB_PORT,
password: process.env.DB_PASSWORD
});
я хочу импортировать этот блок в несколько функций, не записывая его снова и снова
2 ответа
В дополнение к использованию слоев (что, вероятно, является избыточным только для совместного использования кода), у вас также есть два других маршрутизатора, которые вы можете использовать:
- Вы можете поместить общий код в отдельный файл (так что в итоге вы получите 3 файла в вашем проекте -
lambda1.js
,lambda2,js
а такжеshared.js
). Затем вам нужно будет упаковатьlambda1
в виде zip-файла, содержащегоlambda1.js
а такжеshared.js
например. - Вы можете хранить весь код в одном файле (скажем,
alllambda.js
) и имеют разные настроенные функции обработчика (exports.handler1
,exports.handler2
) - когда вы настраиваете свои функции AWS Lambda,Lambda1
имеетHandler
настроен какhandler1
а такжеLambda2
имеетhandler2
, Это, очевидно, плохо масштабируется (и имеет дополнительные недостатки при совместном использовании кода инициализации).
Один из вариантов - создать отдельную лямбду со всем общим кодом. Затем вы можете вызывать разделяемую лямбду из всех остальных лямбд или использовать "основную" лямбду для обработки вперед-назад.