Добавление проекта Geo Django в AWS Lambda с помощью Zappa. Получение OSError: невозможно открыть общий объектный файл: нет такого файла или каталога

Я пытаюсь развернуть приложение Geo-Django на Zappa 1st, которое я получил

django.core.exceptions.ImproperlyConfigured: Could not find the GDAL library 
(tried "gdal", "GDAL", "gdal2.2.0", "gdal2.1.0", "gdal2.0.0", "gdal1.11.0", 
"gdal1.10.0", "gdal1.9.0"). Is GDAL installed? If it is, try setting 
GDAL_LIBRARY_PATH in your settings.

Затем я перешел по этой ссылке и добавил ниже

Я установил эти переменные среды в своей консоли AWS Lambda:

"LD_LIBRARY_PATH": "/tmp/code/lib/",
"PROJ_LIB": "/tmp/code/lib/proj4/",

и в файле настроек моего (Django) приложения я установил:

GDAL_LIBRARY_PATH = "/tmp/code/lib/libgdal.so.20.1.3"
GEOS_LIBRARY_PATH = "/tmp/code/lib/libgeos_c.so.1"

Теперь я получаю ошибку

OSError: /tmp/code/lib/libgdal.so.20.1.3: cannot open shared object file: No such file or directory

Как я могу это исправить?

Резюме того, что я сделал

$ pip install zappa
$ zappa init
$ zappa deploy prod

Ниже мой zappa_settings.json

{
    "prod": {
        "aws_region": "us-east-1",
        "django_settings": "Cool.settings",
        "profile_name": "default",
        "project_name": "cool",
        "runtime": "python3.6",
        "s3_bucket": "coolplaces-t47c5adgt",
        "extra_permissions": [{
            "Effect": "Allow",
            "Action": ["rekognition:*"],
            "Resource": "*"
        }]
    }
} 

2 ответа

Решение

Хорошо, я думаю, что я почти понял, это то, что я сделал

zappa undeploy prod
pip uninstall zappa
delete the zappa_settings.json file

Шаг 1)

$ pip install git+git://github.com/bahoo/Zappa.git#egg=zappa

Шаг 2) затем введите zappa init тогда вы увидите, что он автоматически создает файл с именем zappa_settings.json

Добавьте к вашему zappa_settings.json:

"project_directory": "/tmp/code", (Скопируйте это как "нет", если это последнее утверждение)"slim_handler": true (Используйте это, если вы получите сообщение об ошибке. Ваш файл слишком велик. Что, я уверен, так и будет, так как размер файла lib равен 107,1 МБ. Также нет ",", так как это было мое последнее утверждение в моем zappa_settings.json без кавычек за правду)

Шаг 3) сделал каталог под названием lib в моем корневом каталоге и скопировал файлы в него. ( Скопируйте эти файлы) Смотрите изображения ниже https://imgur.com/yyd0ixn

Шаг 4) В вашей лямбда-консоли AWS.

"LD_LIBRARY_PATH": "/tmp/code/lib/",
"PROJ_LIB": "/tmp/code/lib/proj4/",

Помните, не заменяйте code оставь его как есть https://imgur.com/a/UZIz65B

Шаг 5) добавьте их в ваш Django settings.py: (не заменяйте code со своим путем оставь как есть)

GDAL_LIBRARY_PATH = "/tmp/code/lib/libgdal.so.20.1.3"
GEOS_LIBRARY_PATH = "/tmp/code/lib/libgeos_c.so.1"

Шаг 6) Наконец, zappa deploy dev или же zappa deploy prod на какой бы стадии вы ни хотели

Шаг 7) Если он дает вам ошибки, сделайте zappa tail он выдаст вам все логи и скажет, в чем ошибка, исправьте их и сделайте zappa update

Это было успешно. Огромное спасибо bahoo за вашу помощь и за то, что вы нашли время для меня. Также большое спасибо за работу геоджанго на Zappa

Это дало мне ошибку, сказав, что неправильный запрос велел мне добавить длинную ссылку amazon на мой разрешенный хост. Сделал это. Теперь следующей ошибкой было добавление моей базы данных. Я делаю это. Но я чувствую, что понял

Для получения более подробной информации обратитесь к https://github.com/Miserlou/Zappa/issues/985

Я предполагаю, что вы связали две необходимые библиотеки в свой пакет развертывания Lambda.

В контейнере Lambda, который извлекается внутри /var/task каталог. Этот каталог уже находится в LD_LIBRARY_PATH, Попробуйте установить другие необходимые ENVVARS в /var/task также.

Другие вопросы по тегам