#amazon-web-services #aws-lambda #glibc #libc
Вопрос:
Я пытаюсь использовать gifsicle в лямбда-функции, используя Node.js 14.время выполнения x. При выполнении функции возникает следующая ошибка:
ERROR /opt/gifsicle: /lib64/libm.so.6: version `GLIBC_2.29' not found (required by /opt/gifsicle)
После некоторой должной осмотрительности я считаю, что мне нужно добавить в свою лямбду слой, содержащий каталог и необходимую зависимость, указанную в ошибке, — но я в полной растерянности относительно того, как это сделать.
Есть какие-нибудь предложения?
Ответ №1:
С инструкциями можно ознакомиться здесь. Информация о том, как создать содержимое слоя, довольно скудна. Что вам нужно сделать, так это следующее:
- Создайте экземпляр EC2 с Amazon Linux 2
- Установите в него gifsicle. Вероятно, вам нужно создать его из исходного кода.
- Создайте zip-файл. Файл gif должен перейти в папку bin, а все необходимые библиотеки-в папку lib.
Этот zip-файл должен быть готов к загрузке в виде лямбда-слоя.
Комментарии:
1. ошибка ссылается
lib64/
неlib/
на то, в чем заключается мое замешательство. Я создал пакет zip с моей локальной машины Linux, на которой работает Gifsicle, и он работает просто отлично. Я просто не понимаю, какую именно папку lib включить в комплект.2. Ваш локальный файл, вероятно, не будет работать. Вам нужно скомпилировать gif-файлы в среде EC2. Как говорится в ошибке, версия glibc 2.29 не найдена. В вашей системе двоичный файл построен на основе glibc 2.29, но он недоступен в лямбда-контейнере. Боюсь, что кратчайшего пути нет. Вам нужно создать экземпляр EC2, установить свой двоичный файл и создать там zip-файл.
3. Я создал новый экземпляр EC2, установил Gifsicle, создал zip, включая gifisicle, и всю папку /lib64/* — поднял этот слой до lambda через was cli, и у меня все еще возникает эта проблема. Мне нужно знать, как настроить lambda для просмотра папки /lib64 моего zip-файла