Развертывание на AWS лямбда-хитов, ограничение размера и пакеты (такие как numpy) не совместимы - PullRequest
0 голосов
/ 10 января 2019

У меня относительно небольшой скрипт, в котором я использую следующие зависимости:

firebase-admin
pandas

Тем не менее, при установке этих зависимостей вы также получаете более 60 дополнительных зависимостей, таких как numpy, scikit, google_cloud и т. Д.

Во время развертывания я столкнулся со многими проблемами, из которых наиболее яркими были следующие:

  1. Вы быстро достигли предела размера в 250 МБ. только numpy составляет около 100 МБ.
  2. Некоторые пакеты с скомпилированными библиотеками несовместимы, например, 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).

1 Ответ

0 голосов
/ 11 января 2019

Вы можете развернуть к лямбде и окружающим сервисам, используя безсерверную инфраструктуру. Я использую безсерверный фреймворк с плагином serverless-python-требований, который будет компилировать и связывать любые необходимые требования Python. Под капотом он преобразуется в шаблон облачной информации и развертывает ваши функции и зависимые ресурсы в виде стека в AWS.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...