У меня относительно небольшой скрипт, в котором я использую следующие зависимости:
firebase-admin
pandas
Тем не менее, при установке этих зависимостей вы также получаете более 60 дополнительных зависимостей, таких как numpy
, scikit
, google_cloud
и т. Д.
Во время развертывания я столкнулся со многими проблемами, из которых наиболее яркими были следующие:
- Вы быстро достигли предела размера в 250 МБ. только numpy составляет около 100 МБ.
- Некоторые пакеты с скомпилированными библиотеками несовместимы, например,
numpy
, поэтому вам необходимо их раскрутить (см. ссылка ).
Я провел, может быть, два дня, пытаясь обойти эти проблемы. Однако мне вообще не удалось запустить мой маленький скрипт.
Поэтому мне интересно:
- Подходит ли AWS lambda для моего случая использования, учитывая трудности при развертывании? Если так сложно развернуть простой скрипт с перечисленными выше зависимостями?
- Какие еще хорошие практики для преодоления установки зависимостей? Можно ли отделить зависимости от реальных функций?
- Какие есть еще лучшие (более простые) способы развертывания в Lambda? В частности, мне неудобно каждый раз архивировать все мои функции и пакеты сайтов, чтобы просто сделать небольшое обновление .
Примечание к последнему: я пробовал также следующие решения:
- zappa : Следуя этому уроку , я попытался развернуть его с помощью zappa. После столкновения и каким-то образом решения проблемы ограничения размера у меня возникла другая проблема, заключающаяся в том, что в моем маленьком скрипте не было функции приложения в формате myservice.app. После поиска в Google я обнаружил, что Zappa был разработан для приложений WSGI.
- python-lambda : Я также попробовал этот другой часто рекомендуемый вариант. Однако после установки я не смог вызвать команду
lambda init
. Смотрите мой вопрос по этому вопросу здесь .
- с использованием aws sam и слоев . Я следовал
README.me
после установки aws-sam-cli
и выполнил все шаги. В результате я загрузил новый пакет на S3, который использовал для создания нового слоя. Тем не менее, я продолжал получать сообщение об ошибке «numpy not found», несмотря на то, что я поместил numpy
в мой файл require.txt и правильно собрал пакеты сайта (как это было в моем видимом SamApp).