При использовании AWS Lambda Layers я предпочитаю несколько слоев или один слой со всеми зависимостями? - PullRequest
2 голосов
/ 24 февраля 2020

У нас есть несколько AWS лямбд в Node.js (v10.x), и некоторые из них имеют некоторые "специфические c большие" зависимости, которые не являются общими для всех из них. Например, у нас есть функция Authorizer, которая зависит от пакета firebase-admin NPM, и это единственная лямбда-версия, которая ее использует.

Чтобы упростить поддержку, на данный момент у нас есть один слой, который содержит все зависимости. Есть ли какая-то польза от разделения зависимостей более чем на один слой? Я предполагаю, что больший слой увеличивает время «холодного старта». Однако насколько велик этот штраф по отношению к размеру слоя? Я не смог найти в документации AWS никаких ссылок по этому поводу.

Подобный вопрос, но на разных языках. Если мы используем несколько языков для наших лямбд (например, Node и Python), могу ли я иметь один лямбда-слой, который содержит зависимости для обоих языков? Я думаю, что это более простой выбор, поскольку зависимости Python будут эффективно никогда использоваться кодом Node.js. Тем не менее, я хотел бы прочитать некоторые AWS рекомендуемые рекомендации по управлению слоями.

1 Ответ

2 голосов
/ 25 февраля 2020

Размер лямбды со всеми распакованными слоями должен быть меньше 250 МБ, если вы близки к этому размеру, рассмотрите возможность разделения слоев и используйте только те, которые вам нужны.

Вы можете смешивать зависимости для разных языков в одном слое, поскольку это просто файлы, которые вы можете повторно использовать в своей среде Lambda. Как вы сказали, это увеличит холодный запуск, и каждая функция, которая использует общий слой, загрузит слой независимо. Поэтому, если вам проще поддерживать все в одном слое, сохраняйте его как есть, однако, как правило, не рекомендуется загружать код, который вы не собираетесь использовать.

С другой стороны, каждый Функция может иметь только до 5 уровней, поэтому, разбив общий код и зависимости на небольшие слои, вы вскоре можете достичь этого предела.

...