На aws лямбда нет модуля с именем psycopg2.Каков наилучший способ решить эту проблему? - PullRequest
1 голос
/ 24 сентября 2019

Это мой requirements.txt файл:

hvac==0.9.5
psycopg2-binary==2.8.3

Я не знаю, что еще я могу сделать.Я не совсем понимаю, в чем проблема:

psycopg2 необходимо собрать и скомпилировать со статически связанными библиотеками для Linux.

Но почему это работает локально?Я думаю, это потому, что pip собирает и компилирует его для macos?Это правильно?

Что я могу сделать, чтобы решить эту проблему?Является ли сборка и компиляция библиотеки и включение папки в мое безсерверное развертывание лучшим способом для этого?Это лучший способ?

1 Ответ

1 голос
/ 24 сентября 2019

Lambda не запускает ваш файл requirements.txt для загрузки зависимостей.Вы должны упаковать эти зависимости в свой артефакт развертывания Lambda.Для двоичных зависимостей, таких как psycopg2, они должны быть статически скомпилированы в виртуальной машине Amazon Linux, чтобы они работали в среде выполнения Lambda.Это задокументировано здесь .

Для конкретной используемой вами библиотеки кто-то уже создал версию, которая будет работать на AWS Lambda здесь .

В качестве альтернативы, вы можете добавить лямбда-слой к вашей функции, которая включает в себя psycopg2.Кто-то уже создал его для вас здесь .

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