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

Я пытаюсь развернуть свое приложение 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 ]

0 голосов
/ 24 января 2019

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

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

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

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

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

Шаг 5) добавьте их в свои настройки Django.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 за вашу помощь и за то, что вы нашли время для меня.Также большое спасибо за то, что geodjango работал на zappa

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

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

0 голосов
/ 22 января 2019

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

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

...