У меня есть попытка настроить 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
и использовал его для развертывания.
Если вы хотите создать свои собственные Lambda-совместимые двоичные файлы для использования в ваших пакетах развертывания, AWS заявляет, что AMI необходимо их создать здесь:
https://docs.aws.amazon.com/lambda/latest/dg/current-supported-versions.html
Я создал экземпляр EC2 с этим конкретным AMI, а затем использовал pip для установки пакетов, которые мне нужны, в целевую папку -t
. После завершения я просто tar'd это и использовал его в качестве основы для моего пакета развертывания, и он работал.
В качестве альтернативы я скачал с: https://github.com/ryfeus/lambda-packs и скопировал нужные мне пакеты. (Что в случае shapley, были красивыми и стройными-1.6b4.dist-info каталогами.
Я считаю, что они созданы только для Python 2.7 на данный момент, и я только скомпилировал двоичные файлы с указанным выше AMI для Python 2.7.
НТН
Я столкнулся с этой же проблемой и смог настроить слой для использования в Lambda. Я написал его как пакет с открытым исходным кодом здесь https://github.com/bearflagrobotics/libgeos-lambda-build, используя Docker для сборки бинарного дистрибутива. Вы можете просто добавить его в качестве слоя для вашей лямбда-функции и запустить любую версию Shapely или Python, какую захотите!