Настройка Shapely для функций AWS Lambda Python
Я попытался настроить Shapely на AWS Lambda
но всегда получал ошибку ниже.
module initialization error: Could not find lib geos_c or load any of its variants ['libgeos_c.so.1', 'libgeos_c.so', '/usr/lib/libgeos_c.so'].
Не уверен, как построить shapely
в этом случае. Построили мой пакет на Linux
экземпляр и использовали то же самое для целей развертывания.
1 ответ
Если вы хотите создать свои собственные двоичные файлы, совместимые с Lambda, для использования в ваших пакетах развертывания, AWS заявляет AMI, необходимый для их сборки, здесь:
https://docs.aws.amazon.com/lambda/latest/dg/current-supported-versions.html
Я создал экземпляр EC2 с этим конкретным AMI, а затем использовал pip для установки необходимых пакетов в целевую папку -t
, По завершении я просто отредактировал это и использовал его в качестве основы для моего пакета развертывания, и это сработало.
В качестве альтернативы я скачал с: https://github.com/ryfeus/lambda-packs и скопировал необходимые мне пакеты. (Что в случае с shapley было каталогами shapely и shapely-1.6b4.dist-info.
Я считаю, что они созданы только для Python 2.7 на данный момент, и я только скомпилировал двоичные файлы с вышеуказанным AMI для Python 2.7.
НТН
Я столкнулся с этой же проблемой и смог настроить слой для использования в Lambda. Я написал его как пакет с открытым исходным кодом здесь https://github.com/bearflagrobotics/libgeos-lambda-build используя Docker для сборки бинарного дистрибутива. Вы можете просто добавить его в качестве слоя для вашей лямбда-функции и запустить любую версию Shapely или Python, какую захотите!