Настройка Shapely для функций AWS Lambda Python

1

У меня есть попытка настроить 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 и использовал его для развертывания.

Теги:
aws-lambda
shapely

2 ответа

3
Лучший ответ

Если вы хотите создать свои собственные 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.

НТН

1

Я столкнулся с этой же проблемой и смог настроить слой для использования в Lambda. Я написал его как пакет с открытым исходным кодом здесь https://github.com/bearflagrobotics/libgeos-lambda-build, используя Docker для сборки бинарного дистрибутива. Вы можете просто добавить его в качестве слоя для вашей лямбда-функции и запустить любую версию Shapely или Python, какую захотите!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню