在 AWS Lambda Python 函数上设置 Shapely

Setting up Shapely on AWS Lambda Python functions

我尝试在 AWS Lambda 上设置 Shapely,但总是出现以下错误。

module initialization error: Could not find lib geos_c or load any of its variants ['libgeos_c.so.1', 'libgeos_c.so', '/usr/lib/libgeos_c.so'].

不确定在这种情况下如何构建 shapely。在 Linux 实例上构建了我的包,并将其用于部署目的。

如果您希望构建自己的 Lambda 兼容二进制文件以用于您的部署包,AWS 会在此处说明构建它们所需的 AMI:

https://docs.aws.amazon.com/lambda/latest/dg/current-supported-versions.html

我已经使用该特定 AMI 创建了一个 EC2 实例,然后使用 pip 将我需要的包安装到 target 文件夹 -t 中。完成后,我简单地 tar 将其整理并用作我的部署包的基础并且它起作用了。

或者我从以下网址下载:https://github.com/ryfeus/lambda-packs 并复制了我需要的包。 (在 shapley 的情况下,是 shapely 和 shapely-1.6b4.dist-info 目录。

我相信这些目前只为 Python 2.7 构建,我只为 Python 2.7 编译了带有上述 AMI 的二进制文件。

HTH

我遇到了同样的问题,并且能够设置构建一个层以在 Lambda 中使用。我在这里 https://github.com/bearflagrobotics/libgeos-lambda-build 使用 Docker 构建二进制分发版,将其编写为开源包。您可以将其作为 lambda 函数的层和 运行 任何版本的 Shapely 或 Python 您想要的!