Поиск по сайту:

Как автоматически сжимать изображения в S3 с помощью Lambda


Одной из самых больших затрат AWS является пропускная способность — это дорого, особенно если ваше приложение зависит от обслуживания контента. Сжатие изображений, которые вы предоставляете, может значительно сократить ваш счет, а также сэкономить деньги на расходах на хранение.

Зачем уменьшать размер?

Самый простой способ снизить пропускную способность — уменьшить размер объектов, которые вы обслуживаете, с помощью сжатия и кодирования. Это также может снизить затраты на хранение, что со временем может сэкономить много денег. Качество JPEG встроено в стандарт; JPEG-файлы, закодированные с качеством 70% или около того, по-прежнему четкие и почти неотличимы от 100%-го качества (при котором не следует кодировать JPEG, предназначенные для распространения в Интернете).

Кроме того, если вы разрешаете пользователям загружать свои собственные изображения и не обрабатываете их каким-либо образом, вы подвергаете себя злоупотреблениям со стороны пользователей, загружающих несколько гигабайт гигантских фотографий и замедляющих работу вашего приложения.

У AWS нет встроенного инструмента для этого, поэтому вам придется использовать Lambda, сервис AWS для запуска кода в ответ на триггеры без предоставления серверов. Если вы также хотите кодировать видео, у AWS есть сервис для этого, так как это более ресурсоемкая задача.

Начиная

Перейдите в консоль управления Lambda и нажмите «Создать функцию».

К счастью, в репозитории бессерверных приложений Lambda уже есть готовое приложение, которое может выполнять базовое сжатие изображений и идеально подходит для этой задачи. Выберите «Просмотреть репозиторий бессерверных приложений».

Затем найдите «compress» с помощью evanchiu:

Это приложение использует преобразования, которые владеют корзиной S3 и следят за загруженными файлами. Когда файл загружается, функция запускается, сжимает изображение и помещает его в корзину назначения.

Входной сегмент создается функцией, а выходной сегмент необходимо создать из консоли управления S3:

Затем, вернувшись в консоль Lambda, введите имя целевой корзины в настройках приложения, а затем дайте имя исходной корзине, которая будет создана. Убедитесь, что его не существует, так как приложение должно владеть сегментом.

Здесь вы можете указать качество JPEG. Хотя 70% или около того должно быть хорошим числом, вы можете провести собственное тестирование, чтобы увидеть, что лучше всего подходит для вашего приложения.

Нажмите «Развернуть», и приложение должно быть запущено. Через несколько минут вы увидите только что созданную исходную корзину, принадлежащую приложению. Если вы загрузите в него изображение, вы быстро увидите сжатое изображение, созданное в целевом сегменте.

Если вы хотите изменить приложение или добавить свои собственные функции, вы можете сделать это, нажав на вкладку «Функции» справа:

Здесь вы также можете изменить триггеры, которые запускают функцию, и отредактировать настройки, которые вы установили при создании функции.