Reglas De Ciclo De Vida en Buckets S3

Introducción

En el artículo anterior de esta serie te presenté las clases de almacenamiento en los buckets S3 y como escoger la clase correcta te puede ayudar en dependencia de tus necesidades. En este arículo estaremos hablando sobre un tema que viene muy relacionado a las clases de almacenamiento, y son las reglas de ciclo de vida de S3, que, entre otras cosas, te permiten mover de forma automática los objetos de una clase a la otra, veamos que podemos hacer con esta característica de S3.

Utilidad de las reglas de ciclo de vida

Las reglas de ciclo de vida nos permiten realizar acciones sobre nuestros objetos almacenados en S3 de forma automática. Se dividen en dos tipos de acciones:

  • Acciones de transición:
    • Nos permiten mover nuestros objetos de una clase a otra automáticamente, por ejemplo, si queremos mover nuestros objetos de la clase S3 Estándar hacia S3 Glacier luego de 6 meses de que el objeto haya sido creado en el bucket, podemos hacerlo con estas acciones
  • Acciones de expiración:
    • Nos permiten eliminar objetos de nuestro bucket cada cierto tiempo
    • Pueden usarse para eliminar versiones de nuestros ovjetos, solo en caso que tengamos habilitado el versionado en nuestro bucket
    • Puede usarse para eliminar subidas Multi-Part incompletas

Importante tener en cuenta que las reglas se pueden crear para ciertos prefijos de nuestro bucket, por ejemplo, si queremos que una regla aplique solo a los objetos organizados en el prefijo images/, podemos especificarlo. También podemos aplicar las reglas a objetos con ciertas etiquetas.

Las reglas de ciclo de vida no se ven afectadas por los bucket policy, o sea, aunque un bucket policy deniegue todas las acciones de todos los usuarios en un bucket, las reglas de ciclo de vida funcionarán normalmente.

Transiciones de ciclo de vida soportadas

/es/posts/s3-buckets-lifecycle-policies/s3-transitions.es.webp

En la imagen anterior podemos ver las distintas transiciones entre distintas clases de almacenamiento usando las reglas de ciclo de vida de S3.

Importante tener en cuenta que para los buckets que tengan el versionado habilitado, no se pueden transicionar los objetos cuyo estado de replicación es Pending

Limitaciones para las acciones de transición

Objetos menores de 128KB no transicionan por defecto hacia ninguna clase

Esto sucede porque cada vez que se aplica transición de una clase hacia la otra se aplica un cargo por solicitud de transición, y en los objetos pequeños el costo de transición es mayor a lo que se ahorra por almacenamiento al mover hacia otra clase.

En caso que desees aplicar las transiciones en objetos menores de 128KB, puedes aplicar un filtro por tamaño de objeto que especifique un tamaño mínimo personalizado (ObjectSizeGreatherThan)

Los objetos deben estar almacenados por un mínimo de 30 días antes de transicionar hacia ciertas clases

Si deseas transicionar tus objetos hacia S3 Estándar de Acceso Poco Frecuente o S3 Una Zona de Acceso Poco Frecuente estos deben estar almacenados en el bucket por al menos 30 días. AWS no soporta esta transición en los primeros 30 días porque los objetos nuevos son accedidos más frecuentemente de lo que es factible para moverlos hacia una de estas dos clases.

Se aplican cargos por transicionar objetos antes de su duración mínima de almacenamiento

Algunas clases tienen una duración mínima de almacenamiento (revisar aquí), en caso que transiciones un objeto de una clase a la otra y aún no haya cumplido esa duración mínima de almacenamiento, se aplicarán dichos cargos. Por ejemplo, si tu objeto tiene una clase cuya duración mínima de almacenamiento es de 30 días, y luego de 15 días hace una transición hacia otra clase, entonces se aplicarán los cargos correspondientes a los restantes 15 días.

Consideraciones para las acciones de expiración

Cuando un objeto alcanza el fin de su tiempo de vida basado en una acción de expiración, S3 toma una acción de Expiración basado en el estado de Versionado del bucket (tema que trataremos en los próximos artículos):

  • Bucket no versionado: Amazon S3 añade el objeto a una cola para removerlo asíncronamente, eliminando el objeto permanentemente.
  • Bucket versionado: Si el objeto actual no es un delete marker, S3 lo marca como delete marker con un ID de versión único.
  • Bucket versionado suspendido: S3 crea un delete marker con null como el ID de la versión. Este delete marker reemplaza cualquier versión del objeto con un ID de versión null, lo que efectivamente elimina el objeto.

Para buckets con el versionado habilitado o suspendido, hay que tener en cuenta lo siguiente:

  • La expiración de objetos solo aplica a la versión actual de un objeto
  • S3 no aplica ninguna acción si hay una o más versiones del objeto y el delete marker es la versión actual

Si no entiendes lo relacionado al versionado de los bucket S3, en el próximo artículo estaremos tratando lo relacionado a este tema

Aplicaciones prácticas

  • Tu aplicación almacena todos los días en un bucket S3 un fichero para mantener el estado de una entidad en tu aplicación y sepas que luego de tres meses estos ficheros difícilmente serán accedidos nuevamente, pero incluso así tienen que ser accedidos instantáneamente, además, estos ficheros solo deben ser almacenados por un año. En este caso puedes diseñar la solución de la siguiente forma:

    • Los objetos se almacenan en S3 Estándar y mediante una regla de transición se mueven hacia la clase S3 Estándar de Acceso Poco Frecuente
    • Mediante una regla de expiración, los objetos expiran luego de estar almacenados en el bucket por un año
  • Tu aplicación genera miniaturas de las imágenes de perfil de cada usuario. Estas imágenes pueden ser fácilmente reproducibles y solo necesitan mantenerse por 60 días. Las imágenes de perfil deben ser obtenidas inmediatamente por 60 días, pero luego de 60 días el usuario puede esperar hasta 6 horas. En este caso puedes diseñar esta solución de la siguiente forma:

    • Las miniaturas las almacenas en S3 Una Zona de Acceso Poco Frecuente con una regla de expiración para eliminarlas luego de 60 días
    • Las imágenes las almacenas en S3 Estándar y con una regla de transición las mueves hacia S3 Glacier luego de 60 días

Nos vemos pronto

Esto es todo por ahora relacionado al tercer artículo de esta serie donde estaré brindándote una guía completa sobre los buckets de S3. En el próximo artículo estaremos hablando sobre versionado en los bucket S3. Nos vemos pronto.


Contenido relacionado

Recibe las últimas publicaciones en tu correo
0%