Adding a Geo Django project to AWS Lambda using Zappa. Getting OSError: cannot open shared object file: No such file or directory
Adding a Geo Django project to AWS Lambda using Zappa. Getting OSError: cannot open shared object file: No such file or directory
我正在尝试将我的 Geo-Django 应用程序部署到 Zappa
第一个我得到了
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.
然后我按照这个link添加了下面的
我在我的 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
我该如何解决这个问题?
Summary of what I have done
$ 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": "*"
}]
}
}
我假设您已将两个必需的库捆绑到您的 Lambda 部署包中。
在 Lambda 容器中,它被提取到 /var/task
目录中。该目录已经在 LD_LIBRARY_PATH
中。尝试将其他必要的 ENVVARS 也设置为 /var/task
。
好的,我想我差不多明白了
这就是我所做的
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 MB。也没有“,”,因为这是我在我的最后一个声明zappa_settings.json true 没有引号)
步骤 3) 在我的根目录中创建一个名为 lib
的目录,并将文件复制到其中。 (Copy these files) 见下图
https://imgur.com/yyd0ixn
步骤4)
在您的 AWS lambda 控制台中。
"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 的帮助,并花时间为我简化它。也非常感谢你让 geodjango 在 zappa
上工作
它给了我一个错误,说错误的请求告诉我要添加一个长亚马逊 link 到我允许的主机。做过某事。现在下一个错误是添加我的 data_base。我正在这样做。但我觉得我明白了
我正在尝试将我的 Geo-Django 应用程序部署到 Zappa 第一个我得到了
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.
然后我按照这个link添加了下面的
我在我的 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
我该如何解决这个问题?
Summary of what I have done
$ 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": "*"
}]
}
}
我假设您已将两个必需的库捆绑到您的 Lambda 部署包中。
在 Lambda 容器中,它被提取到 /var/task
目录中。该目录已经在 LD_LIBRARY_PATH
中。尝试将其他必要的 ENVVARS 也设置为 /var/task
。
好的,我想我差不多明白了 这就是我所做的
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 MB。也没有“,”,因为这是我在我的最后一个声明zappa_settings.json true 没有引号)
步骤 3) 在我的根目录中创建一个名为 lib
的目录,并将文件复制到其中。 (Copy these files) 见下图
https://imgur.com/yyd0ixn
步骤4) 在您的 AWS lambda 控制台中。
"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 的帮助,并花时间为我简化它。也非常感谢你让 geodjango 在 zappa
上工作它给了我一个错误,说错误的请求告诉我要添加一个长亚马逊 link 到我允许的主机。做过某事。现在下一个错误是添加我的 data_base。我正在这样做。但我觉得我明白了