¿Cómo administrar el ciclo de vida de los objetos en S3 para optimizar costos?
S3 es uno de los servicios más populares ofrecidos por AWS y aunque parece tener un costo muy bajo, si no administramos bien nuestros objetos puede que terminemos con una sorpresa en nuestra factura mensual.
Clases de almacenamiento en S3
En AWS existen diversas clases de almacenamiento que podemos utilizar según sean nuestras necesidades, estas son:
- S3 Standard: Almacenamiento de propósito general. Se utiliza generalmente para datos a los que se accede con frecuencia.
- S3 Standard IA: Se utiliza para almacenar datos de larga duración, pero con acceso poco frecuente. Cuando se accede a los datos se requiere una recuperación de milisegundos.
- Intelligent Tiering: Almacenamiento con ahorros de costos automáticos para datos con patrones de acceso desconocidos o que cambian constantemente.
- One-Zone IA: Almacenamiento de datos recreables de acceso poco frecuente que requieren de acceso en milisegundos.
- Glacier Instant Retrieval: Almacenamiento para datos con acceso cada tres meses con recuperación instantánea en milisegundos.
- Glacier Flexible Retrieval (S3 Glacier): Almacenamiento de copias de seguridad y archivos a largo plazo con opción de recuperación de 1 minuto a 12 horas
- Glacier Deep Archive: Almacenamiento de archivos a largo plazo a los que se accede una o dos veces al año y que se pueden restaurar dentro de un plazo de 12 horas.
Precios de almacenamiento en S3
A continuación, veremos un ejemplo de cómo son los costos de almacenamiento, recuperación y monitoreo por clase para la región del Norte de Virginia (us-east-1)
Standard | Standard-IA | Intelligent Tiering | One Zone IA | Glacier Instant Retrieval | Glacier Flexible Retrieval | Glacier Deep Archive | |
---|---|---|---|---|---|---|---|
Costo de almacenamiento (Gb por mes) | $0.023 | $0.0125 | $0.0125-$0.023 | $0.01 | $0.004 | $0.0036 | $0.00099 |
Costo por recuperación (Por 1000 solicitudes) | GET: $0.0004 POST: $0.005 | GET: $0.001 POST: $0.01 | GET: $0.0004 POST: $0.005 | GET: $0.001 POST: $0.01 | GET: $0.01 POST: $0.02 | GET: $0.0004 POST: $0.03 Expedited: $10 Standard: $0.05 Bulk: free | GET: $0.0004 POST: $0.05 Standard: $0.10 Bulk: $0.025 |
Tiempo de recuperación | instantáneo | instantáneo | instantáneo | instantáneo | instantáneo | Expedited (1 – 5 mins) Standard (3 – 5 horas) Bulk (5 – 12 horas) | Standard (12 horas) Bulk (48 horas) |
Costo por monitoreo (Por 1000 objetos) | - | - | $0.0025 | - | - | - | - |
Como podemos ver, el costo de almacenamiento cambia dependiendo de la clase de almacenamiento que elijamos, por lo que, si podemos idear una estrategia para mover nuestros objetos a través de las diferentes clases de almacenamiento a lo largo de su ciclo de vida, podemos ahorrar mucho dinero.
Lifecycle rules
Las reglas de ciclo de vida (Lifecycle rules) nos permiten mover nuestros objetos a través de las diferentes clases de almacenamiento de manera automática especificando una serie de reglas. Podemos dividir están reglas en dos categorías:
- Acciones de transición: Mueve los objetos a una clase de almacenamiento diferente.
- Mover un objeto a Standard IA después de 30 días de almacenamiento
- Mover un objeto a Glacier después de 90 días de almacenamiento
- Acciones de expiración: Configura los objetos para “expirar” después de un tiempo.
- Utilizado para eliminar versiones antiguas de un objeto (Si el versionamiento está activado)
Estas reglas se pueden aplicar a todo el Bucket, a un prefijo (similar a una carpeta) o a los objetos que tengan una etiqueta específica.
Administrando el ciclo de vida de los objetos
Para crear una regla de ciclo de vida seguimos los siguientes pasos:
Desde alguno de los Buckets que tengamos creados, nos dirigimos hacia la pestaña de “Management” y presionamos la opción de “Create lifecycle rule”
Le asignamos un nombre a la regla
Seleccionamos si queremos que la regla aplique a todos los objetos del Bucket, o, si, por el contrario, deseamos aplicarla solo a algunos objetos. Podemos filtrarlo por prefijo, alguna etiqueta, o el tamaño de los objetos. Para mantenerlo simple lo aplicaremos a todos los objetos del Bucket.
Seleccionamos todas las reglas que deseamos que apliquen. Debemos tener en cuenta que, si no está activado el versionamiento del Bucket, algunas de estas opciones no funcionarán.
Podemos ver como en este ejemplo movemos los objetos a la clase Standard-IA, después de 60 días, a Glacier Instant Retrieval después de 120 días y a Glacier Deep Archive después de 240 días. Po último, eliminamos el objeto después de 365 días.
¿Cómo sabemos que reglas aplicar?
S3 provee un servicio denominado “S3 Analytics” desde donde podremos generar un reporte de “Storage Class Analysis” que nos ayuda a decidir cómo y cuándo mover los objetos a la clase que se adapte mejor. El reporte se actualiza diariamente, pero necesita de 24 a 48 horas para comenzar a mostrar los análisis de los datos.
Los pasos para generar el reporte son los siguientes:
Desde nuestro Bucket, nos dirigimos hacia la pestaña de “Management”, bajamos un poco y nos encontraremos con la sección de “Storage Class Analysis”.
Presionamos el botón de “Create analytics configuration”.
Le asignamos un nombre y al igual como lo hicimos con las reglas de ciclo de vida, seleccionamos si queremos analizar todo el Bucket o solamente algún prefijo o etiquetas en específico.
Por último, marcamos si queremos exportar el reporte a un CSV o no y creamos la configuración.
El reporte final luce de la siguiente manera:
Nota: Este análisis solo funciona para las clases Standard y Standard IA
Conclusiones
S3 es uno de los servicios más populares de AWS y mediante una correcta implementación podemos hacer que los costos de almacenamiento se puedan reducir en una cantidad considerable (Solo entre la clase Standard y Standard IA podemos ahorrar un 45%) además, con todas las herramientas que nos provee S3 podemos gestionar la transición de nuestro objetos de forma automática a través de las diferentes clases, definiendo las reglas según nuestras necesidades, las políticas de nuestra empresa, o bien, utilizando las herramientas de análisis incluidas en S3.
¿Cómo administrar el ciclo de vida de los objetos en S3 para optimizar costos?