То, что мы делаем, это принимаем запрос на изображение типа «media / catalog / product / 3/0/30123 / 768x / lorem.jpg», затем мы используем исходное изображение, расположенное в «media / catalog / product / 3». /0/30123.jpg ", измените его размер до 768px и webp, если браузер поддерживает это, а затем верните новое изображение (если оно еще не кэшировано).
Если вы запросите: wysiwyg / lorem.jpg, он попытается создать веб-страницу с максимальным разрешением 1920 пикселей (без увеличения).
Кажется, это прекрасно работает до изображения шириной <= 1420 пикселей. Однако выше этого мы получаем только <code>HTTP 502: The Lambda function returned invalid json: The json output is not parsable.
Существует аналогичная проблема с SO, связанная с GZIP, однако, насколько я понимаю, на самом деле изображения GZIP не следует: https://webmasters.stackexchange.com/questions/8382/gzipped-images-is-it-worth/57590#57590
Но возможно, что исходное изображение уже загружено в S3 GZIPPED. Но gzip может быть ошибочным, потому что тогда он будет работать для небольших изображений? У нас отключен GZIP в Cloudfront.
Я дал функции Lamda @ Edge Resize максимальные ресурсы 3 ГБ памяти и время ожидания 30 секунд. Этого недостаточно для больших изображений?
Я удалил уже сгенерированные изображения, аннулировал Cloudfront, но он по-прежнему ведет себя так же ..
РЕДАКТИРОВАТЬ: ОБНОВЛЕНИЕ :
Я просто попробовал другое изображение, и затем оно отлично работает .. Я не представляю, почему и как я должен тогда решить сломанное изображение ... Я предполагаю, что Cloudfront кешировал 502 сейчас ... Я аннулировал, используя просто "* "но это не помогло .. Оба исходных файла - jpg.
Исходный исходный образ для рабочего - 6,1 МБ, а для нерабочего - 6,7 МБ, если это имеет значение.
У них есть эти ограничения:
https://docs.aws.amazon.com/lambda/latest/dg/limits.html
Размер файла response.body составляет около 512 МБ, когда он перестает работать.