AWS Lambda:如何使用Pillow库?

时间:2016-06-23 09:36:01

标签: python-2.7 aws-lambda pillow

我正在尝试创建AWS lambda函数,以便创建上传图像的缩略图。 我的脚本在本地运行良好,我按照tutorial来部署我的函数,但我的Pillow库有问题,实际上当我测试我的函数时,我可以看到以下日志:

enter image description here

我发现这个post有同样的问题但在我的情况下我无法在机器上执行命令行。

2 个答案:

答案 0 :(得分:6)

您必须在lambda软件包中包含libjpeg.so,但还需要使用patchelf实用程序进行一些调整。假设您通过“pip install module-name -t”(而非通过virtualenv)准备lambda包,请执行以下操作:

cd into/your/local/lambda/package/dir
cp -L $(ldd PIL/_imaging.so|grep libjpeg|awk '{print $3}') PIL/
patchelf --set-rpath PIL PIL/_imaging.so
# zip, deploy and test the package

此脚本适用于Pillow 3.2.0版。

关于patchelf:在Ubuntu下,它可以'apt install',但在其他Linux下,可能需要built from source

答案 1 :(得分:0)

这里的问题是Pillow使用必须为完全正确的环境构建的本机库。

我通过在一个非常紧密地复制AWS Lambda环境lambci/lambda的Docker容器中安装需求来解决了这个问题。我使用的是build-python3.8版本。

我在那里安装了需求,并压缩了/var/lang/lib/python3.8/site-packages/目录的全部内容以及lambda函数文件。

我使用标准的Amazon Linux Docker映像尝试了此操作,但此操作无效。只有lambci / lambda图像对我有用。