Cómo comprimir imágenes automáticamente en S3 con Lambda

Tabla de contenido:

Cómo comprimir imágenes automáticamente en S3 con Lambda
Cómo comprimir imágenes automáticamente en S3 con Lambda
Anonim

Uno de los mayores costos de AWS es el ancho de banda: es costoso, especialmente si su aplicación depende de servir contenido. Comprimir las imágenes que ofrece puede reducir significativamente su factura, así como ahorrarle dinero en costos de almacenamiento.

¿Por qué reducir el tamaño?

La forma más sencilla de reducir el ancho de banda es reducir el tamaño de los objetos que está sirviendo con compresión y codificación. También puede reducir sus costos de almacenamiento, lo que puede ahorrar mucho dinero con el tiempo. JPEG tiene calidad integrada en el estándar; Los archivos JPEG codificados al 70% aproximadamente siguen siendo nítidos y casi indistinguibles de una calidad del 100% (en la que no se debe codificar ningún JPEG destinado a la distribución web).

Además, si permite que los usuarios carguen sus propias imágenes y no las procesa de alguna manera, se expone al abuso de los usuarios que cargan varios gigabytes de fotos gigantescas y ralentizan su aplicación.

AWS no tiene una herramienta integrada para hacer esto, por lo que tendrá que usar Lambda, el servicio de AWS para ejecutar código en respuesta a disparadores sin aprovisionar servidores. Si también desea codificar video, AWS tiene un servicio para esto, ya que es una tarea que requiere más CPU.

Primeros pasos

Diríjase a la consola de administración de Lambda y haga clic en "Crear función".

crear función
crear función

Afortunadamente, ya existe una aplicación preconstruida en el repositorio de aplicaciones sin servidor de Lambda que puede manejar la compresión de imágenes básica y es perfecta para esta tarea. Seleccione "Examinar el repositorio de aplicaciones sin servidor".

explorar el repositorio de la aplicación
explorar el repositorio de la aplicación

Luego, busque "comprimir", por

evanchiu:

buscar compresa
buscar compresa

Esta aplicación utiliza transformaciones, que posee un depósito S3 y lo observa en busca de archivos cargados. Cuando se carga un archivo, la función se ejecuta, comprime la imagen y la coloca en un depósito de destino.

La función crea el depósito de entrada, pero el depósito de salida deberá crearse desde S3 Management Console:

consola s3
consola s3

Luego, de vuelta en la Consola de Lambda, ingrese el nombre de su depósito de destino en la Configuración de la aplicación, luego proporcione un nombre para el depósito de origen que se creará. Asegúrate de que esto no exista ya, ya que la aplicación debe ser propietaria del cubo.

Aquí puede especificar la calidad JPEG. Si bien el 70 % más o menos debería ser un buen número, puede realizar sus propias pruebas para ver qué funciona mejor para su aplicación.

En Configuración de aplicaciones, ingrese el nombre del depósito de destino y el nombre del depósito de origen, junto con la calidad-jg.webp
En Configuración de aplicaciones, ingrese el nombre del depósito de destino y el nombre del depósito de origen, junto con la calidad-jg.webp

Haga clic en "Implementar" y la aplicación debería estar en funcionamiento. En unos minutos, verá el depósito de origen recién creado propiedad de la aplicación. Si carga una imagen en él, verá rápidamente la imagen comprimida creada en el depósito de destino.

Si desea modificar la aplicación o agregar su propia funcionalidad, puede hacerlo haciendo clic en la pestaña "Funciones" a la derecha:

Al hacer clic en la pestaña Funciones, puede modificar la aplicación o agregar su propia funcionalidad
Al hacer clic en la pestaña Funciones, puede modificar la aplicación o agregar su propia funcionalidad

Aquí, también puede modificar los activadores que hacen que se ejecute la función y editar la configuración que estableció al crear la función.

Tema popular