AWS Lambda:如何使用 Pillow 库?
AWS Lambda : How to use Pillow library?
我正在尝试创建一个 AWS lambda 函数,以便为我上传的图像创建缩略图。
我的脚本在本地 运行 很好,我按照这个 tutorial 来部署我的函数,但是我的 Pillow 库有问题,事实上,当我测试我的函数时,我可以看到以下日志:
我发现这个 post 有同样的问题,但在我的情况下,我无法在机器上执行命令行。
您必须在您的 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 }') 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。
这里的问题是 Pillow 使用必须为完全正确的环境构建的本机库。
我通过将我的要求安装在一个非常接近 AWS Lambda 环境 lambci/lambda 的 Docker 容器中解决了这个问题。我用的是 build-python3.8
版本。
我在那里安装了我的要求,并压缩了 /var/lang/lib/python3.8/site-packages/
目录的全部内容以及我的 lambda 函数文件。
我用标准的亚马逊 Linux Docker 图片试过了,但没有用。只有 lambci/lambda 图片对我有用。
我正在尝试创建一个 AWS lambda 函数,以便为我上传的图像创建缩略图。 我的脚本在本地 运行 很好,我按照这个 tutorial 来部署我的函数,但是我的 Pillow 库有问题,事实上,当我测试我的函数时,我可以看到以下日志:
我发现这个 post 有同样的问题,但在我的情况下,我无法在机器上执行命令行。
您必须在您的 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 }') 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。
这里的问题是 Pillow 使用必须为完全正确的环境构建的本机库。
我通过将我的要求安装在一个非常接近 AWS Lambda 环境 lambci/lambda 的 Docker 容器中解决了这个问题。我用的是 build-python3.8
版本。
我在那里安装了我的要求,并压缩了 /var/lang/lib/python3.8/site-packages/
目录的全部内容以及我的 lambda 函数文件。
我用标准的亚马逊 Linux Docker 图片试过了,但没有用。只有 lambci/lambda 图片对我有用。