AWS Lambda NodeJS12.x - 加载共享库时出错:libXrender.so.1

AWS Lambda NodeJS12.x - error while loading shared libraries: libXrender.so.1

我已经将 lambda 函数从 nodejs8 更新到 nodejs12。

wkhtmltopdf 在 nodejs 8 上运行良好,但现在出现此错误:

"wkhtmltopdf: error while loading shared libraries: libXrender.so.1: cannot open shared object file: No such file or directory

我尝试手动将库 libXrender 放入文件项目,但它不起作用。

如果有人有关于如何使 wkhtmltopdf 在 nodejs 12 中的 aws lambda 上工作的解决方案,那就太好了。提前谢谢你。

检查下面的存储库以在 Lambda 下使用 wkhtmltopdf

https://github.com/lubos/aws-lambda-wkhtmltopdf

https://github.com/dimiro1/lambda-wkhtmltopdf

https://github.com/jpaolin/aws-lambda-s3-wkhtmltopdf

我遇到了同样的问题。最终从亚马逊 Linux 提取了必要的库+字体 2 张图片如下:

1) 运行 并输入亚马逊 docker 容器 Linux 2:

docker run -it --rm amazonlinux:2.0.20191217.0

2)在docker容器内安装必要的工具,并自动准备必要的依赖(基于64位):

mkdir -p /deps
yum install -y yum-utils rpmdevtools
yum install -y libXrender.x86_64 fontconfig.x86_64 freetype.x86_64 libXext.x86_64 libX11.x86_64 expat.x86_64 libxcb.x86_64 libXau.x86_64
yumdownloader libXrender.x86_64 fontconfig.x86_64 freetype.x86_64 libXext.x86_64 libX11.x86_64 expat.x86_64 libxcb.x86_64 libXau.x86_64
rpmdev-extract *rpm
cp /tmp/*/usr/lib64/* /deps
cp -R /tmp/*/etc/fonts /deps/

3) 打开一个新终端 windows 并导航到 PDF lambda 文件夹。使用 docker ps 命令,找到容器 ID 并粘贴以下命令:

docker cp <CONTAINER_ID>:/deps/ . && mv deps/* . && rmdir deps

4) 将<your_lambda_path>/deps/fonts/fonts.conf的内容替换成这个,或者提供你自己的配置+字体文件:

<fontconfig>
<dir>/var/task/fonts/</dir>
<cachedir>/tmp/fonts-cache/</cachedir>
<config></config>
</fontconfig>

5) 在您的处理程序中,您需要设置以下内容以查找字体:

process.env['FONTCONFIG_PATH'] = process.env['LAMBDA_TASK_ROOT'] + '/fonts'

这样做之后,只需压缩您的包并像往常一样部署。

希望对您有所帮助