使用 Docker 在 Lambda 上为 Poppler 直接构建说明
为了将 Poppler 放在 Lambda 上,我们将构建一个包含 poppler 的压缩文件夹并将其添加为层。在运行 Amazon Linux 2 的 EC2 实例上执行这些步骤(t2micro 很多)。
- 设置机器
在 EC2 机器上安装 docker。指令here
mkdir -p poppler_binaries
- 创建 Dockerfile
使用此link 或从下方复制/粘贴。
FROM ubuntu:18.04
# Installing dependencies
RUN apt update
RUN apt-get update
RUN apt-get install -y locate \
libopenjp2-7 \
poppler-utils
RUN rm -rf /poppler_binaries; mkdir /poppler_binaries;
RUN updatedb
RUN cp $(locate libpoppler.so) /poppler_binaries/.
RUN cp $(which pdftoppm) /poppler_binaries/.
RUN cp $(which pdfinfo) /poppler_binaries/.
RUN cp $(which pdftocairo) /poppler_binaries/.
RUN cp $(locate libjpeg.so.8 ) /poppler_binaries/.
RUN cp $(locate libopenjp2.so.7 ) /poppler_binaries/.
RUN cp $(locate libpng16.so.16 ) /poppler_binaries/.
RUN cp $(locate libz.so.1 ) /poppler_binaries/.
- 构建 Docker 镜像并创建一个 zip 文件
运行以下命令将在您的主目录中生成一个 zip 文件。
docker build -t poppler-build .
# Run the container
docker run -d --name poppler-build-cont poppler-build sleep 20
#docker exec poppler-build-cont
sudo docker cp poppler-build-cont:/poppler_binaries .
# Cleaning up
docker kill poppler-build-cont
docker rm poppler-build-cont
docker image rm poppler-build
cd poppler_binaries
zip -r9 ..poppler.zip .
cd ..
- 制作并添加您的 Lambda 层
下载您的 zip 文件或将其上传到 S3。前往 Lambda 控制台页面以创建一个层,然后将其添加到您的函数中。图层信息here。
- 向 Lambda 添加环境变量
如here 所述,为了避免向 zip 中添加不必要的文件夹结构。我们将添加一个环境变量来指向我们的依赖项
PYTHONPATH: /opt/
还有维奥拉!您现在有了一个使用 Poppler 的有效 Lambda 函数!
注意:感谢这两篇文章帮助我将其拼凑在一起
警告:不要尝试将 pdf2image 添加到同一层。我不知道为什么,但是当它们在同一层时,pdf2image 找不到 poppler。