Я пытаюсь написать Лямбду функцию AWS python, которая использует Shapely для простых операций «point in polygon». Я развернул экземпляр AWS linux EC2, установил Shapely и имел рабочий скрипт. Затем я загрузил linux specific libgeos_c.so.1 из моего экземпляра EC2 и связал его (через сервер без сервера), чтобы существовать в том же каталоге, что и моя лямбда-функция. Однако после развертывания сценарий не будет выполняться, потому что он выдает ошибку «Не могу найти библиотеку или загрузить любую ее версию ...». Я даже попытался явно указать путь libgeos_c.so.1 через переменную среды GEOS_LIBRARY_PATH, чтобы не повлиять. Разве это невозможно?Можно ли правильно указать LIBGEOS_C библиотеки Python Shapely в среде AWS Lambda?
Вот фрагмент кода, который устанавливает переменную окружения, а затем вызывает вторичный скрипт, который фактически импортирует и использует красивую форму.
import sys
import os
import subprocess
here = os.path.dirname(os.path.realpath(__file__))
# Import installed packages (in site-packages)
site_pkgs = os.path.join(here, "venv", "lib", "python2.7", "site-packages")
sys.path.append(site_pkgs)
import json
def hello(event, context):
command = "GEOS_LIBRARY_PATH={} python test_geo_worker.py".format(here + "/libgeos_c.so.1")
foo = subprocess.check_output(command, shell=True)
print foo
Есть ли у кого-нибудь все успешно развернутые стройки в лямбда? Мой резервный план - вернуться к хорошим старым postgres/postgis вместо стройного, но я бы хотел попытаться построить это в стеке dynamo/lambda.
Была ли эта проблема решена? – dcinzona
Вы нашли решение на этом? Я буквально просто попал в ту же проблему – Graeme