首页 > 解决方案 > 如何在 aws lambda 中使用 gdal(geodjango)?

问题描述

不管我怎么看,我都找不到好的方法。
如何在 aws lambda 中安装 gdal?
如果我的问题还不够,请纠正我。对不起我的英语不好。

标签: lambdapostgisgdalserverlessgeodjango

解决方案


IMO 一个不错的选择是使用 lambda 层。您可以自己创建一个,也可以使用已编译并公开提供的一个(可用性取决于您所在的地区)。

这里有两个选项:

https://github.com/lambgeo/docker-lambda
https://github.com/developmentseed/geolambda

例如,如果您想使用 lambgeo in 中的层us-east-1,您只需将这些arns 之一添加到您的函数中:

"layers": [
            {
                "name": "gdal24",
                "arn": "arn:aws:lambda:us-east-1:524387336408:layer:gdal24:1",
                "version": 1
            },
            {
                "name": "gdal30",
                "arn": "arn:aws:lambda:us-east-1:524387336408:layer:gdal30:1",
                "version": 1
            },
            {
                "name": "gdal31",
                "arn": "arn:aws:lambda:us-east-1:524387336408:layer:gdal31:1",
                "version": 1
            }

有关区域和arns 的完整列表,请参阅链接。


附加信息

添加层后,应在信息
下面的 lambda 中添加环境变量这是使用 docker-lambda 的示例。

"GDAL_DATA": "/opt/share/gdal",
"PROJ_LIB": "/opt/share/proj",
"GDAL_LIBRARY_PATH": "/opt/lib/libgdal.so.2.x.x",    // Enter correct version
"GEOS_LIBRARY_PATH": "/opt/lib/libgeos_c.so.1.xx.x"  // Enter correct version

对于 django,编辑你的 django settings.py

GDAL_LIBRARY_PATH = os.getenv('GDAL_LIBRARY_PATH')
GEOS_LIBRARY_PATH = os.getenv('GEOS_LIBRARY_PATH')

推荐阅读