Как установить Numpy и Pandas для AWS Lambdas? - PullRequest
0 голосов
/ 18 декабря 2018

Проблема: Я хотел использовать Numpy и Pandas в своей лямбда-функции AWS.Я работаю на Windows 10 с PyCharm.Моя функция компилируется и отлично работает на локальной машине, однако, как только она упакована и развернута на AWS, она перестает работать, что приводит к ошибкам при импорте пакетов numpy и pandas.Я попытался переустановить оба пакета, а затем переустановить, однако ошибка осталась прежней.

Решения StackOverFlow: Другие люди сталкиваются с похожими проблемами, и другие пользователи считают, что это в основном проблема совместимости, поскольку библиотеки Python компилируются в Windows, тогда как AWS Lambda работает на компьютерах Linux.

Вопрос: Какой лучший способ создать пакет развертывания для AWS в Windows 10?Есть ли способ указать целевую платформу при установке пакетов через PIP.Очевидно, в pip есть опция с тегом --platform, но я не могу понять, как ее использовать.Любая помогает?

Ответы [ 2 ]

0 голосов
/ 25 июня 2019

Как часто, существует несколько способов прийти к решению.

Предпочтительный способ imho - использовать лямбда-слои AWS, потому что он отделяет функциональный код от зависимостей.Основы объясняются здесь .

  1. Получите все ваши зависимости.Как вы правильно сказали, для AMI Linux необходимо скомпилировать панд и numpy.Это можно сделать с помощью инструмента: «Требования к Python без сервера» или с помощью Docker-контейнера на основе этого image .Более подробную инструкцию можно найти здесь .
  2. Поместите зависимости в папку с именем python.
  3. , чтобы сжать всю папку, например, с помощью предварительно установленного инструмента Windows Zip.
  4. Загрузите zip-файл в AWS как слой: перейдите в AWS Lambda, слева выберите Layers и «Создайте новый слой».
  5. После того, как вы сохранили слой, перейдите к лямбда-функции и выберите «Слои».Нажмите «Добавить слой», выберите вновь созданный слой и нажмите «Сохранить».Теперь ваша функция не должна больше получать ошибки импорта.
0 голосов
/ 18 декабря 2018

Вам нужно сжать коды и загрузить их.

Упакуйте все свои зависимости

zip -r9 ../function.zip .

Упакуйте свою функцию

zip -g function.zip function.py

Обновление до лямбды

aws lambda update-function-code --function-name python37 --zip-file fileb://function.zip (здесь имя функции - python37)

Что касается пользователей Windows

доиспользуйте команды zip, самый простой способ - использовать cygwin или использовать Подсистема Windows для Linux , но команда zip - это просто инструмент для сжатия файлов, любое сжатие графического интерфейсаинструмент также должен работать.

Ссылки

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