lambda - 如何在 aws lambda 中使用 gdal(geodjango)?
问题描述
不管我怎么看,我都找不到好的方法。
如何在 aws lambda 中安装 gdal?
如果我的问题还不够,请纠正我。对不起我的英语不好。
解决方案
IMO 一个不错的选择是使用 lambda 层。您可以自己创建一个,也可以使用已编译并公开提供的一个(可用性取决于您所在的地区)。
这里有两个选项:
https://github.com/lambgeo/docker-lambda
https://github.com/developmentseed/geolambda
例如,如果您想使用 lambgeo in 中的层us-east-1
,您只需将这些arn
s 之一添加到您的函数中:
"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
}
有关区域和arn
s 的完整列表,请参阅此链接。
附加信息
添加层后,应在信息
下面的 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')
推荐阅读
- c - 如何在C中挂钩自定义函数?
- xcode - 在 Xcode 项目中,不小心重置了所有未提交的更改,我可以找回它吗?
- c# - 如何在不明确指定关系的情况下使用关系数据更新实体框架核心中的实体?
- delphi - 连接丢失时通知用户
- ios - swift 中基于 AdMob 奖励的视频广告
- c++ - C++ 我应该在堆还是栈上分配大型结构?
- javascript - 如何在点击反应时隐藏div
- python - Python:将“for obj in reponse.json() 循环”拆分为从第 x 个对象请求
- python - ColdFusion 执行编译的 Python exe
- c# - 如何解决“Neo4j 返回了有效响应,但是 Neo4jClient 无法反序列化为您提供的对象结构。” 错误?