Добавление проекта 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
также.