【发布时间】:2017-04-30 14:24:32
【问题描述】:
我正在尝试编写一个 AWS python Lambda 函数,该函数利用 Shapely 进行简单的“多边形中的点”操作。我启动了一个 AWS linux EC2 实例,安装了 Shapely 并有一个工作脚本。然后,我从我的 EC2 实例下载了 linux 特定的 libgeos_c.so.1 二进制文件,并将它(通过无服务器框架)捆绑到与我的 lambda 函数相同的目录中。但是,一旦我部署脚本将不会执行,因为它会引发“找不到库或加载其任何变体......”错误。我什至尝试通过 GEOS_LIBRARY_PATH 环境变量明确指向 libgeos_c.so.1 路径,但没有效果。这是不可能的部署吗?
这是一个设置环境变量的代码 sn-p,然后调用一个辅助脚本,该脚本实际导入和使用 shapely。
import sys
import os
import subprocess
here = os.path.dirname(os.path.realpath(__file__))
# Import installed packages (in site-packages)
site_pkgs = os.path.join(here, "venv", "lib", "python2.7", "site-packages")
sys.path.append(site_pkgs)
import json
def hello(event, context):
command = "GEOS_LIBRARY_PATH={} python test_geo_worker.py".format(here + "/libgeos_c.so.1")
foo = subprocess.check_output(command, shell=True)
print foo
有人在 lambda 中成功部署了吗?我的后备计划是回到旧的 postgres/postgis 而不是 shapely,但我肯定想尝试在 dynamo/lambda 堆栈中构建它。
【问题讨论】:
-
这个问题解决了吗?
-
您找到解决方案了吗?我确实遇到了同样的问题
标签: python amazon-web-services aws-lambda serverless-framework shapely