我正在尝试创建AWS lambda函数,以便创建上传图像的缩略图。 我的脚本在本地运行良好,我按照tutorial来部署我的函数,但我的Pillow库有问题,实际上当我测试我的函数时,我可以看到以下日志:
我发现这个post有同样的问题但在我的情况下我无法在机器上执行命令行。
答案 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图像对我有用。