[AWS Lambda]: Как исправить «/lib64/libm.so.6: версия `GLIBC_2.29′ не найдена»

#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-файла