Как предотвратить дублирование кода в лямбде?

У меня есть некоторые функции 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, Это, очевидно, плохо масштабируется (и имеет дополнительные недостатки при совместном использовании кода инициализации).

Один из вариантов - создать отдельную лямбду со всем общим кодом. Затем вы можете вызывать разделяемую лямбду из всех остальных лямбд или использовать "основную" лямбду для обработки вперед-назад.

Другие вопросы по тегам