Como parte de la asesoría en la nube que damos a nuestros clientes en DoiT International, de vez en cuando me topo con casos extremos en los que el intento del cliente por reducir costos termina disparando los costos de almacenamiento de S3. En este post te explico cómo evitar que te pase.

Al guardar archivos (objetos) en un bucket de S3, dispones de las siguientes clases de almacenamiento: Standard (predeterminada), Infrequent Access (también conocida como Standard-IA), Intelligent-Tiering, Glacier y S3 Outposts.
La clase de almacenamiento se define al subir el archivo o en cualquier momento posterior. Una práctica habitual consiste en crear una regla de ciclo de vida en el bucket, donde se especifican las acciones que Amazon S3 debe ejecutar a lo largo de la vida del objeto (por ejemplo, mover el archivo de la clase Standard a Infrequent Access a los 30 días de haberse creado).
La clase Infrequent Access permite almacenar archivos a un costo menor que la clase Standard. La velocidad de descarga, la durabilidad y la latencia son idénticas a las de Standard, pero el costo de descargar el archivo es más alto. Por eso, como su nombre lo indica, Infrequent Access es ideal para archivos a los que casi no se accede.

Regla de ciclo de vida que pasa los archivos de la clase Standard a Intelligent tier. El costo de la transición es de $2,000. A los cinco meses de la transición, el cliente empezará a pagar menos por el almacenamiento.
Errores comunes de costos en S3
Hay dos problemas frecuentes que pueden encarecer el almacenamiento de un bucket:
- La mayoría no sabe que cambiar de una clase de almacenamiento a otra cuesta dinero. AWS cobra $0.01 por cada 1000 transiciones de la clase Standard a la clase Infrequent Access.
- Algunas clases de almacenamiento de S3 imponen un tamaño mínimo de archivo. En el caso de Infrequent Access, ese mínimo es de 128Kb.


Especificaciones de las clases de almacenamiento de S3
Esto puede llevar a situaciones en las que un cliente con cientos de millones de archivos pequeños en un bucket de S3 termine pagando un costo único muy elevado por la transición.
¿Cuántos archivos tengo en mi bucket?
Existen dos formas de revisar la cantidad de archivos y el tamaño del bucket:
- A nivel de archivo: con S3 Inventory puedes generar un reporte diario con el listado de archivos del bucket, su tamaño y su clase de almacenamiento.
- A nivel de bucket: con las métricas de Cloudwatch puedes consultar la cantidad de archivos y el tamaño del bucket. Estas métricas también están disponibles desde la consola de S3, en Management — > Metrics.

Tamaño del bucket de S3

Cantidad de archivos en el bucket de S3
¿Cuándo conviene configurar una regla de ciclo de vida?
Empieza por calcular el tamaño promedio (sin ponderar) de los archivos: divide el tamaño del bucket de S3 entre la cantidad de archivos.
Por ejemplo, en el bucket que utilicé para las capturas de pantalla de este artículo, el tamaño es de 22.1Tb y contiene 6.3 millones de archivos, lo que arroja un tamaño promedio de 3.42Mb por archivo.
Pasar a Infrequent Access podría implicar un pago único elevado en costos de almacenamiento.
Cálculo del costo de la transición y su rentabilidad
Si aplicamos la regla de ciclo de vida para mover este bucket de 22.1Tb a Infrequent Access, por la transición de 6.3 millones de archivos se paga una sola vez $63 (6,300,000 archivos agrupados en bloques de 1,000 y multiplicados por $0.01), con un costo de almacenamiento mensual de $282.88.
De los cálculos anteriores se desprende que la transición entre clases reduce los costos desde el primer mes.
En conclusión
AWS S3 ofrece varias clases de almacenamiento que, bien utilizadas, pueden mejorar la eficiencia y generar ahorros significativos.