AWS Lambda NodeJS12.x - ошибка при загрузке общих библиотек: libXrender.so.1 - PullRequest
1 голос
/ 07 января 2020

Я обновил лямбда-функцию с nodejs8 до nodejs12.

wkhtmltopdf хорошо работал с nodejs 8, но теперь я получаю эту ошибку:

"wkhtmltopdf: ошибка при загрузке общих библиотек: libXrender.so.1: невозможно открыть файл общего объекта: такого файла или каталога нет:

Я пытался вручную вставить librair ie libXrender в проект файла, но это не не работает.

Если у кого-то есть решение о том, как заставить wkhtmltopdf работать на aws лямбда в nodejs 12, это было бы здорово. Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 14 января 2020

У меня была такая же проблема. Закончилось извлечение необходимых библиотек + шрифтов из образа Amazon Linux 2, как показано ниже:

1) Запустите и введите контейнер docker для Amazon 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 Лямбда папка. Используя команду docker ps, найдите идентификатор контейнера и вставьте следующую команду:

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'

После этого просто заархивируйте ваш пакет и разверните как обычно.

Надеюсь, это поможет

0 голосов
/ 07 января 2020

проверьте репозитории ниже для использования wkhtmltopdf под Lambda

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

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

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

...