Модуль узла хранения в корзине S3 для AWS Lambda

0

Вопрос

Я разработал функцию/программу на основе nodejs и хочу запустить ее на AWS Lambda. Проблема в том, что размер больше 50 МБ, а AWS Lambda поддерживает прямой код функции размером менее 50 МБ.

В основном в моем коде размер модуля узла составляет 43 МБ, а фактический код составляет около 7 МБ. Итак, есть ли какой-либо способ отделить мой модуль узла от кода, возможно, если мы сможем сохранить модули узла в корзине S3, а затем получить доступ к нему на AWS Lambda? Любые предложения были бы полезны. Спасибо

P. S: Из-за некоторых проблем с зависимостями я не могу запустить эту функцию в качестве образа докера на Лямбде.

amazon-web-services aws-lambda node.js
2021-11-23 22:10:38
2
1

Если вы не хотите или не можете использовать упаковку Docker, вы можете заархивировать свои node_modules в корзину S3.

Ваш handler (или модуль, содержащий ваш обработчик), затем можно загрузить zip-архив и извлечь файлы в /tmp. Тогда ты require() ваши модули оттуда.

Приведенное выше описание не может быть точным на 100%, так как существует множество способов сделать это. Но такова общая идея.

Это один из методов развертывания, который zappa, инструмент для развертывания приложений Python/Django в AWS Lambda, поддерживался задолго до того, как контейнеры docker были разрешены в Lambda.

https://github.com/Miserlou/Zappa/pull/548

2021-11-23 22:49:27
1

Вы можете использовать лямбда-слои, которые идеально подходят для вашего случая использования. Некоторое время назад нам нужно было использовать facebook sdk для одного из наших проектов, и мы создали лямбда-слой для facebook sdk(32 МБ), а затем пакет развертывания стал всего 4 КБ.

Это изложено в виде

Использование слоев может ускорить развертывание приложений с помощью бессерверной модели приложений AWS (AWS SAM) или бессерверной платформы. Перемещая зависимости времени выполнения из кода функции на уровень, это может помочь reduce the overall size of the archive загружено во время развертывания.

Одна лямбда - функция может использовать до five layers. Максимальный размер общей разархивированной функции и всех слоев равен 250 MB что далеко за пределами ваших возможностей.

2021-11-24 17:39:02

На других языках

Эта страница на других языках

Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................