Ciclo de Vida de objetos en Amazon S3

Así como en nuestra vida cotidiana dejamos los objetos que utilizamos con mayor frecuencia a nuestro alcance y guardamos aquellos a los que no le damos tanto uso en lugares específicos.

El servicio de Amazon S3, dentro de sus funcionalidades, nos ofrece la opción de administrar la manera en la que se almacenan nuestros grupos de objetos clasificándolos en las clases de almacenamiento que se ilustran a continuación:

alt

Los objetos se clasifican, dependiendo de la frecuencia con que accedamos a ellos, por medio un conjunto de reglas que definen tipos de acciones a través de la configuración del Ciclo de Vida de S3 (Amazon S3 Lifecycle).

El servicio de Amazon S3 dentro de sus funcionalidades nos ofrece la opción de administrar la manera en la que se almacenan nuestros grupos de objetos por medio un conjunto de reglas que definen tipos de acciones a través de la configuración del Ciclo de Vida de S3 (Amazon S3 Lifecycle).

Estas se dividen en acciones de transición y de vencimiento. Las acciones de transición definen el momento en que los objetos se movilizan a otra clase de almacenamiento, mientras que, las acciones de vencimiento definen el momento en que vencen los objetos.

El Ciclo de vida de S3 se configura mediante un XML, cuya estructura se escribiría de la manera:

< LifecycleConfiguration >
   < Rule >
     ...
   < /Rule >
   < Rule >
     ...
   < /Rule >
< /LifecycleConfiguration >

Como podemos observar puede incluir entre una o hasta un máximo de 1000 reglas y cada regla esta compuesta por los siguientes elementos:

  • Metadatos, que indican si la regla se encuentra en estado (Status) activo o inactivo e incluyen un ID único de máximo 255 caracteres para cada regla. Si la regla está desactivada, Amazon S3 no realiza ninguna acciones sobre ella.

  • Filtro (Filter), indica los objetos sobre los que la regla será aplicada. Se pueden especificar mediante:

    • Prefijos de clave, todos aquellos objetos que inicien de la forma en que especifiquemos. En el siguiente ejemplo, aplicamos los prefijos que indentifican los objetos que pertenecen a las cuentas de Compras y Ventas

      < LifecycleConfiguration>
          <Rule>
              <Filter>
                 <Prefix>Compras/</Prefix>
              </Filter>
              transition/expiration actions.
              ...
          </Rule>
      
      
         <Rule>
              <Filter>
                 <Prefix>Ventas/</Prefix>
              </Filter>
              transition/expiration actions.
               ...
          </Rule>
      </LifecycleConfiguration>
      
    • Etiquetas de objeto, si se va a aplicar el filtro a varias etiquetas, se debe anteponer el elemento , de esta forma

      <LifecycleConfiguration>
          <Rule>
            <Filter>
               <And>
                  <Tag>
                     <Key>key1</Key>
                     <Value>value1</Value>
                  </Tag>
                  <Tag>
                     <Key>key2</Key>
                     <Value>value2</Value>
                  </Tag>
                   ...
                </And>
            </Filter>
            transition/expiration actions.
          </Rule>
      </Lifecycle> 
      
  • Una fecha o periodo de tiempo en la vida del objeto que indican cuando Amazon S3 debe realizar una acción en específico.

La configuración del Ciclo de vida de S3 debe ser definida para los objetos con ciclo de vida definido, es decir:

  • Cuando los logs se cargan en un bucket periódicamente. Es posible que a la semana o al mes se desee eliminarlos.

  • Se accede a documentos con una frecuencia específica, pero posteriormente serán consultados con menor cantidad de veces. Es posible que más adelante no se necesite acceder a ellos en tiempo real, pero desee mantener el histórico por un tiempo. Al cumplir éste tiempo, podrán ser eliminados.

  • Se desea cargar en S3 tipos de datos cuya finalidad es ser archivados, ya que deben ser conservados por mucho tiempo.

Al haber aplicado las reglas de configuración del Ciclo de vida de S3, los archivos podrán ser almacenados con una mayor economía.

A continuación encontraremos dos ejemplos. El primero deshabilita una regla del ciclo de vida. Y el segundo habilita la transición entre clases de almacenamiento durante la vida útil de un objeto.

  1. Deshabilitar una regla del ciclo de vida

    Las reglas pueden ser desactivadas temporalmente. en el siguiente ejemplo tenemos dos reglas:

    • Primera regla, le da la instrucción a Amazon S3 que pase los objetos que inician con el prefijo Compras/ a las clase de almacenamiento S3 Glacier justo después de su creación.

    • Segunda regla, le da la instrucción a Amazon S3 que pase los objetos con el prefijo Facturas/ a la clase de almacenamiento S3 Glacier inmediatamente después de su creación.

      <LifecycleConfiguration>
        <Rule>
          <ID>Rule1</ID>
          <Filter>
            <Prefix>logs/</Prefix>
          </Filter>
          <Status>Enabled</Status>
          <Transition>
            <Days>0</Days>
            <StorageClass>S3 Glacier</StorageClass>
          </Transition>
        </Rule>
        <Rule>
          <ID>Rule2</ID>
          <Prefix>documents/</Prefix>
          <Status>Disabled</Status>
          <Transition>
            <Days>0</Days>
            <StorageClass>S3 Glacier</StorageClass>
          </Transition>
        </Rule>
      </LifecycleConfiguration> 
      
  2. Transición entre clases de almacenamiento durante la vida útil de un objeto

    Utilizamos la configuración del estilo de vida para pasar objetos a otras clases de almacenamiento durante su vida útil. Esta transición puede ayudar a reducir los costos de almacenamiento.

    La siguiente configuración de Ciclo de vida de S3 especifica una regla que se aplica a objetos con el prefijo de nombre de clave Ventas/. La regla especifica las siguientes acciones:

    • Dos acciones de transición:

      • Pasar objetos a la clase de almacenamiento S3 Standard-IA 30 días después de su creación
      • Pasar objetos a la clase de almacenamiento S3 Glacier 90 días después de su creación
    • Una acción de vencimiento que le indica a Amazon S3 que elimine los objetos un año después de su creación

      <LifecycleConfiguration>
        <Rule>
          <ID>ID-de-Ejemplo</ID>
          <Filter>
             <Prefix>Ventas/</Prefix>
          </Filter>
          <Status>Enabled</Status>
          <Transition>
            <Days>30</Days>
            <StorageClass>STANDARD_IA</StorageClass>
          </Transition>
          <Transition>
            <Days>90</Days>
            <StorageClass>GLACIER</StorageClass>
          </Transition>
          <Expiration>
            <Days>365</Days>
          </Expiration>
        </Rule>
      </LifecycleConfiguration>
      

No dudes en contactar a cualquier miembro del equipo si tienes alguna duda. Saludos.

Nota: Ejemplos ajustados de la documentación oficial de AWS sobre Amazon S3.

comments powered by Disqus