Престижность до stdunbar за то, что направил меня в правильном направлении.
При установке Sharp на MacOS через NPM обычным способом (т.е. npm i sharp --save
) установщик автоматически добавляет двоичные файлы для OS X. Но AWS лямбда-функции запускаются на Linux 2 компьютерах с x64 процессоры, и именно поэтому мы получаем эту ошибку.
Чтобы исправить, вы должны сначала полностью удалить Sharp, а затем выполнить:
npm install --arch=x64 --platform=linux sharp
Примечание:
версия 0.25 больше не работает с целевым флагом. Раньше это работало:
npm install --arch=x64 --platform=linux --target=10.15.0 sharp
Затем разверните как обычно из Serverless Framework с sls deploy
Side Примечание:
Sharp ЧРЕЗВЫЧАЙНО БЫСТРО !!! Прежде чем использовать Sharp, я использовал другую утилиту изменения размера изображения, названную Jimp. Он сделал работу, но был довольно медленным. Чтобы избежать ошибок тайм-аута, мне пришлось увеличить размер памяти со 128 до 512, а тайм-аут с 5 секунд до 30 секунд, просто чтобы обработать типичное изображение размером 1 мегабайт.
Вот сравнение между ними для изменения размера 1,2 Мб изображения до 600x400 при той же конфигурации:
Jimp -> использовал 512 Мб памяти и AWS выставил мне счет за 14300 мс.
Sharp -> использовал 132 МБ памяти и AWS выставил счет за 800 мс.
Это более чем в 14 раз быстрее, чем Jimp !!!