Elementos de configuración del ciclo de vida - Amazon Simple Storage Service

Elementos de configuración del ciclo de vida

La configuración de S3 Lifecycle se especifica mediante un XML que consiste en una o varias reglas de Lifecycle.

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

Cada regla consta de los elementos siguientes:

  • Metadatos de la regla, que incluyen un ID de regla y un estado que indica si esta está activada o desactivada. Si una regla está desactivada, Amazon S3 no realiza ninguna de las acciones especificadas en ella.

  • Un filtro que identifica los objetos sobre los que se aplica la regla. Puede especificar un filtro utilizando un tamaño de objeto, un prefijo de clave de objeto, una o varias etiquetas de objeto, o una combinación de filtros.

  • Una o varias acciones de transición o vencimiento con una fecha o un periodo de tiempo en la vida del objeto en el que quiera que Amazon S3 realice la acción especificada.

En las siguientes secciones se describen los elementos XML de una configuración de S3 Lifecycle. Para ver configuraciones de ejemplo, consulte Ejemplos de configuración de S3 Lifecycle.

Elemento ID

Una configuración de S3 Lifecycle puede tener hasta 1000 reglas. Este límite no se puede ajustar. El elemento <ID> identifica unívocamente una regla. La longitud del ID está limitada a 255 caracteres.

Elemento Status

El valor del elemento <Status> puede ser Enabled o Disabled. Si una regla está desactivada, Amazon S3 no realiza ninguna de las acciones definidas en ella.

Elemento Filter

Una regla de ciclo de vida se puede aplicar a todos los objetos o a un subconjunto de los objetos de un bucket, en función del elemento <Filter> que especifique en la regla de ciclo de vida.

Puede filtrar los objetos por prefijo de clave, etiquetas de objeto o una combinación de ambos (en cuyo caso, Amazon S3 utilizará un operador lógico AND para combinar los filtros). Considere los siguientes ejemplos:

  • Especificación de un filtro mediante prefijos de clave: en este ejemplo se muestra una regla de S3 Lifecycle que se aplica a un subconjunto de objetos en función del prefijo del nombre de la clave (logs/). Por ejemplo, la regla del ciclo de vida se aplica a los objetos logs/mylog.txt, logs/temp1.txt y logs/test.txt. La regla no se aplica al objeto example.jpg.

    <LifecycleConfiguration> <Rule> <Filter> <Prefix>logs/</Prefix> </Filter> transition/expiration actions. ... </Rule> ... </LifecycleConfiguration>

    Si quiere aplicar una acción de ciclo de vida a un subconjunto de objetos en función de diferentes prefijos de nombres de clave, especifique reglas por separado. En cada regla, especifique un filtro basado en prefijos. Por ejemplo, para describir una acción de ciclo de vida para objetos con los prefijos de clave projectA/ y projectB/, debe especificar dos reglas como se muestra a continuación.

    <LifecycleConfiguration> <Rule> <Filter> <Prefix>projectA/</Prefix> </Filter> transition/expiration actions. ... </Rule> <Rule> <Filter> <Prefix>projectB/</Prefix> </Filter> transition/expiration actions. ... </Rule> </LifecycleConfiguration>

    Para obtener más información sobre las claves de objetos, consulte Creación de nombres de clave de objeto.

  • Especificación de un filtro mediante etiquetas de objetos: en el siguiente ejemplo, la regla del ciclo de vida especifica un filtro basado en la etiqueta (clave) y valor (valor). La regla se aplica solo a un subconjunto de objetos que tengan la etiqueta específica.

    <LifecycleConfiguration> <Rule> <Filter> <Tag> <Key>key</Key> <Value>value</Value> </Tag> </Filter> transition/expiration actions. ... </Rule> </LifecycleConfiguration>

    Puede especificar un filtro sobre la base de varias etiquetas. Debe envolver las etiquetas con el elemento <And> mostrado en el siguiente ejemplo. La regla indica a Amazon S3 que debe realizar acciones de ciclo de vida en objetos con dos etiquetas (con la clave y el valor específicos de la etiqueta).

    <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>

    La regla de Lifecycle se aplica solo a un subconjunto de objetos que tengan la etiqueta específica. Amazon S3 realiza una operación lógica AND. Tenga en cuenta lo siguiente:

    • Cada etiqueta debe coincidir exactamente tanto con la clave como con el valor.

    • La regla se aplica al subconjunto de objetos que tienen todas las etiquetas especificadas en la regla. Si un objeto tiene etiquetas adicionales especificadas, se seguirá aplicando la regla.

    nota

    Al especificar varias etiquetas en un filtro, cada clave de etiqueta ha de ser exclusiva.

  • Especificación de un filtro utilizando tanto prefijos como una o varias etiquetas de objetos: en una regla de ciclo de vida, puede especificar un filtro basado tanto en el prefijo de clave como en una o varias etiquetas. Una vez más, debe envolver todos estos elementos con el elemento <And> como se muestra en el siguiente ejemplo.

    <LifecycleConfiguration> <Rule> <Filter> <And> <Prefix>key-prefix</Prefix> <Tag> <Key>key1</Key> <Value>value1</Value> </Tag> <Tag> <Key>key2</Key> <Value>value2</Value> </Tag> ... </And> </Filter> <Status>Enabled</Status> transition/expiration actions. </Rule> </LifecycleConfiguration>

    Amazon S3 combina estos filtros con el operador lógico AND. Es decir, la regla se aplica a un subconjunto de objetos con un prefijo de clave específico y etiquetas específicas. Un filtro solo puede tener un prefijo y ninguna, una o varias etiquetas.

  • Puede especificar un filtro vacío, en cuyo caso, la regla se aplicará a todos los objetos del bucket.

    <LifecycleConfiguration> <Rule> <Filter> </Filter> <Status>Enabled</Status> transition/expiration actions. </Rule> </LifecycleConfiguration>
  • Para filtrar una regla por tamaño de objeto, puede especificar un tamaño mínimo (ObjectSizeGreaterThan) o un tamaño máximo (ObjectSizeLessThan), o bien puede especificar un rango de tamaños de objeto.

    Los valores de tamaño de objeto están expresados en bytes. El tamaño máximo del filtro es de 5 TB. Algunas clases de almacenamiento tienen limitaciones mínimas de tamaño de objeto; para obtener más información, consulte Comparación de las clases de almacenamiento de Amazon S3.

    <LifecycleConfiguration> <Rule> <Filter> <ObjectSizeGreaterThan>500</ObjectSizeGreaterThan> </Filter> <Status>Enabled</Status> transition/expiration actions. </Rule> </LifecycleConfiguration>

    Si especifica un rango de tamaño de objeto, el número entero ObjectSizeGreaterThan debe ser menor que valor ObjectSizeLessThan. Cuando utilice más de un filtro, debe envolver los filtros en un elemento <And>. En el siguiente ejemplo, se muestra cómo especificar objetos en un rango de entre 500 y 64 000 bytes.

    <LifecycleConfiguration> <Rule> <Filter> <And> <Prefix>key-prefix</Prefix> <ObjectSizeGreaterThan>500</ObjectSizeGreaterThan> <ObjectSizeLessThan>64000</ObjectSizeLessThan> </And> </Filter> <Status>Enabled</Status> transition/expiration actions. </Rule> </LifecycleConfiguration>

Elementos para describir las acciones del ciclo de vida

Puede ordenar a Amazon S3 que realice acciones específicas durante la vida útil de un objeto especificando una o varias de las siguientes acciones predefinidas en una regla de S3 Lifecycle. El efecto de estas acciones depende del estado del control de versiones del bucket.

  • Elemento de acción Transición: puede especificar la acción Transition para pasar objetos de una clase de almacenamiento a otra. Para obtener más información acerca de las transiciones de objetos, consulte Transiciones admitidas y limitaciones relacionadas. Cuando se llega a una fecha o periodo de tiempo específico en la vida útil del objeto, Amazon S3 lleva a cabo la transición.

    Para un bucket con control de versiones (un bucket con el control de versiones habilitado o suspendido), la acción Transition se aplica a la versión del objeto actual. Para administrar las versiones no actuales, Amazon S3 define la acción NoncurrentVersionTransition (que se describe más adelante en este tema).

  • Elemento de acción Expiration: la acción Expiration hace que caduquen objetos identificados por la regla y se aplica a los objetos elegibles de cualquiera de las clases de almacenamiento de Amazon S3. Para obtener más información acerca de las clases de almacenamiento, consulte Uso de las clases de almacenamiento de Amazon S3. Amazon S3 hace que todos los objetos vencidos dejen de estar disponibles. La eliminación permanente de los objetos dependerá del estado del bucket en relación con el control de versiones.

    • Bucket sin control de versiones: la acción Expiration da como resultado la eliminación permanente del objeto por parte de Amazon S3.

    • Bucket con control de versiones: para un bucket con control de versiones (un bucket con el control de versiones habilitado o suspendido), hay varias consideraciones que se deben tener en cuenta en relación con cómo administra Amazon S3 la acción Expiration. En el caso de los buckets con el control de versiones activado o suspendido, se aplica lo siguiente:

      • La acción Expiration solo se aplica a la versión actual (no tiene ningún impacto sobre las versiones del objeto no actuales).

      • Amazon S3 no realiza ninguna acción si hay una o varias versiones del objeto y el marcador de eliminación es la versión actual.

      • Si la versión actual del objeto es la única versión del objeto y, además, es un marcador de eliminación (también denominado marcador de eliminación de objeto vencido, en el que todas las versiones del objeto se han eliminado y solo queda un marcador de eliminación), Amazon S3 elimina el marcador de eliminación del objeto vencido. También puede usar la acción de vencimiento para ordenar a Amazon S3 que elimine los marcadores de eliminación de objeto vencidos. Para ver un ejemplo, consulte Ejemplo 7: eliminar marcadores de eliminación de objetos que vencieron.

      Para obtener más información, consulte Usar el control de versiones en buckets de S3.

      Tenga en cuenta también lo siguiente al configurar Amazon S3 para administrar el vencimiento:

      • Bucket con control de versiones habilitado

        Si la versión actual del objeto no es un marcador de eliminación, Amazon S3 añade un marcador de eliminación con un ID de versión exclusivo. Esto convierte la versión actual en no actual, y el marcador de eliminación en la versión actual.

      • Bucket con control de versiones suspendido

        En un bucket con el control de versiones suspendido, la acción de vencimiento provoca que Amazon S3 cree un marcador de eliminación con un ID de versión null. Este marcador de eliminación sustituye cualquier versión del objeto con un ID de versión null en la jerarquía de versiones, lo que elimina el objeto de manera eficaz.

Además, Amazon S3 facilita las siguientes acciones que puede utilizar para administrar las versiones de objetos no actuales en un bucket con control de versiones (en buckets con control de versiones activado o suspendido).

  • Elemento de acción NoncurrentVersionTransition: utilice esta acción para especificar cuándo Amazon S3 debe realizar la transición de los objetos a la clase de almacenamiento especificada. Puede basar este vencimiento en un número determinado de días desde que los objetos se vuelvan no actuales. Además del número de días, también puede indicar un número máximo de versiones no actuales que retener. Este valor especifica cuántas versiones no actuales más recientes deben existir para que Amazon S3 pueda realizar la acción asociada en una versión determinada. También es necesario proporcionar un elemento Filter para especificar la cantidad máxima de versiones no actuales. Si no especifica un elemento Filter, Amazon S3 generará un error InvalidRequest cuando proporcione una cantidad máxima de versiones no actuales.

    Para obtener más información acerca de las transiciones de objetos, consulte Transiciones admitidas y limitaciones relacionadas. Para obtener más información sobre cómo Amazon S3 calcula la fecha en la que especifica el número de días en la acción NoncurrentVersionTransition, consulte Reglas de ciclo de vida: basadas en la edad de un objeto.

  • Elemento de acción NoncurrentVersionExpiration: utilice esta acción para especificar a Amazon S3 que elimine de forma permanente versiones no actuales de objetos. Los objetos eliminados no se pueden recuperar. Puede basar este vencimiento en un número determinado de días desde que los objetos se vuelvan no actuales. Además del número de días, también puede indicar un número máximo de versiones no actuales que retener. Este valor especifica cuántas versiones no actuales más recientes deben existir para que Amazon S3 pueda realizar la acción asociada en una versión determinada. También es necesario proporcionar un elemento Filter para especificar la cantidad máxima de versiones no actuales. Si no especifica un elemento Filter, Amazon S3 generará un error InvalidRequest cuando proporcione una cantidad máxima de versiones no actuales.

    La eliminación retrasada de objetos no actuales puede resultar útil si necesita corregir eliminaciones o sobrescrituras accidentales. Por ejemplo, puede configurar una regla de vencimiento para eliminar las versiones no actuales después de cinco días desde que dejan de ser actuales. Por ejemplo, suponga que el 01/01/2014 a las 10:30 h UTC creó un objeto denominado photo.gif (ID de versión 111111). El 02/01/2014 a las 11:30 h UTC, eliminó por accidente photo.gif (ID de versión 111111), lo que crea un marcador de eliminación con un nuevo ID de versión (por ejemplo: ID de versión 4857693). A partir de este momento tendrá cinco días para recuperar la versión original de photo.gif (ID de versión 111111) antes de que la eliminación sea permanente. El 08/01/2014 a las 00:00 h UTC, se ejecutará la regla del ciclo de vida para el vencimiento y se eliminará permanentemente photo.gif (ID de versión 111111), cinco días después de que la versión dejase de ser actual.

    Para obtener más información sobre cómo Amazon S3 calcula la fecha en la que especifica el número de días en una acción NoncurrentVersionExpiration, consulte Reglas de ciclo de vida: basadas en la edad de un objeto.

    nota

    Las configuraciones del ciclo de vida de vencimiento de los objetos no eliminan las cargas multiparte incompletas. Para eliminar las cargas multiparte incompletas, deberá usar la acción de configuración de ciclo de vida AbortIncompleteMultipartUpload que se describe más adelante en esta sección.

Además de las acciones de transición y vencimiento, puede usar la siguiente acción de configuración del ciclo de vida para ordenar a Amazon S3 que detenga las cargas multiparte incompletas.

  • Elemento de acción AbortIncompleteMultipartUpload: use este elemento para establecer un tiempo máximo (en días) que quiera permitir que las cargas multiparte sigan estando en curso. Si las cargas multiparte aplicables (determinadas por el nombre de clave prefix especificado en la regla de ciclo de vida) no se completan satisfactoriamente en el periodo de tiempo predefinido, Amazon S3 detiene las cargas multiparte incompletas. Para obtener más información, consulte Anulación de la carga multiparte.

    nota

    No puede especificar esta acción de ciclo de vida en una regla que establezca un filtro basado en etiquetas de objetos.

  • Elemento de acción ExpiredObjectDeleteMarker: en un bucket con control de versiones habilitado, un marcador de eliminación sin versiones no actuales se denomina marcador de eliminación del objeto vencido. Puede usar esta acción del ciclo de vida para ordenar a S3 que elimine los marcadores de eliminación del objeto vencidos. Para ver un ejemplo, consulte Ejemplo 7: eliminar marcadores de eliminación de objetos que vencieron.

    nota

    No puede especificar esta acción de ciclo de vida en una regla que establezca un filtro basado en etiquetas de objetos.

Cómo calcula Amazon S3, el tiempo que un objeto lleva siendo no actual

Es posible tener varias versiones de un objeto en un bucket con control de versiones habilitado. Siempre habrá una versión actual y ninguna o varias versiones no actuales. Cada vez que carga un objeto, se conserva la versión actual como versión no actual, y la versión nueva, su sucesora, será la nueva versión actual. Para determinar el número de días que un objeto lleva siendo no actual, Amazon S3 analiza el momento en el que se creó su sucesor. Amazon S3 usa el número de días desde la creación de su sucesor como número de días durante los que un objeto no es actual.

Restauración de versiones anteriores de un objeto al utilizar configuraciones de S3 Lifecycle

Como se explica en detalle en el tema Restaurar versiones anteriores, puede usar cualquiera de los siguientes dos métodos para recuperar versiones anteriores de un objeto:

  1. Al copiar una versión no actual del objeto en el mismo bucket. El objeto copiado se convierte en la versión actual del mismo, y se conservan todas las versiones del objeto.

  2. Al eliminar permanentemente la versión actual del objeto. Al eliminar la versión actual del objeto, en efecto, estará convirtiendo la versión no actual en la versión actual del mismo.

Cuando use las reglas de configuración de S3 Lifecycle en buckets con control de versiones, nuestra recomendación es que use el primer método.

S3 Lifecycle funciona bajo un modelo de coherencia final. Una versión actual eliminada permanentemente podría no desaparecer hasta que se propaguen los cambios (Amazon S3 podría no estar consciente de dicha eliminación). Mientras tanto, la regla del ciclo de vida que haya configurado para hacer que venzan los objetos no actuales podría eliminar permanentemente los objetos no actuales, incluido el que quiera restaurar. Por tanto, copiar la versión antigua, como se recomienda en el primer método, es la alternativa más segura.

En la siguiente tabla se resume el comportamiento de las acciones de las reglas de configuración de S3 Lifecycle de los objetos en relación con el estado del control de versiones del bucket que los contiene.

Acciones de ciclo de vida y estado de control de versiones del bucket
Acción Bucket sin control de versiones (control de versiones no habilitado) Bucket con control de versiones habilitado Bucket con control de versiones suspendido

Transition

Cuando se llega a una fecha o periodo de tiempo específico en la vida útil del objeto.

Amazon S3 pasa el objeto a la clase de almacenamiento especificada. Amazon S3 pasa la versión actual del objeto a la clase de almacenamiento especificada. Mismo comportamiento que en un bucket con control de versiones habilitado.

Expiration

Cuando se llega a una fecha o periodo de tiempo específico en la vida útil del objeto.

En el momento de vencimiento, se elimina el objeto. El objeto eliminado no se puede recuperar. Si la versión actual del objeto no es un marcador de eliminación, Amazon S3 crea un marcador de eliminación, que se convierte en la versión actual, y la versión actual existente se conserva como versión no actual. El ciclo de vida crea un marcador de eliminación con un ID de versión null, que se convierte en la versión actual. Ei el ID de versión de la versión actual del objeto es null, la acción de vencimiento elimina permanentemente esta versión. De lo contrario, se conservará la versión actual como versión no actual.

NoncurrentVersionTransition

Cuando el objeto se ha clasificado como no actual durante el número de días establecido o se ha superado el número máximo especificado de versiones no actuales que se deben retener.

NoncurrentVersionTransition no tiene ningún efecto.

Amazon S3 pasa las versiones no actuales del objeto a la clase de almacenamiento especificada.

Mismo comportamiento que en un bucket con control de versiones habilitado.

NoncurrentVersionExpiration

Cuando el objeto se ha clasificado como no actual durante el número de días establecido o se ha superado el número máximo especificado de versiones no actuales que se deben retener.

NoncurrentVersionExpiration no tiene ningún efecto. La acción NoncurrentVersionExpiration elimina la versión no actual del objeto. El objeto eliminado no se puede recuperar. Mismo comportamiento que en un bucket con control de versiones habilitado.

Reglas de ciclo de vida: basadas en la edad de un objeto

Puede especificar un periodo de tiempo, en número de días a partir de la creación (o modificación) de los objetos, en el que Amazon S3 puede llevar a cabo la acción.

Al especificar el número de días en las acciones Transition y Expiration de una configuración de S3 Lifecycle, tenga en cuenta lo siguiente:

  • Es el número de días a partir de la creación del objeto tras los que ocurrirá la acción.

  • Amazon S3 calcula el tiempo agregando el número de días especificados en la regla al momento de creación del objeto y redondeando el tiempo resultante a la medianoche del día siguiente, UTC. Por ejemplo, si un objeto se creó el 15/01/2014 a las 10:30 h, UTC, y la cantidad de días que especificó en una regla de transición es 3, la fecha de transición del objeto se calculará como 19/01/2014 a las 00:00 h, UTC.

nota

Amazon S3 solo conserva la última fecha de modificación para cada objeto. Por ejemplo, la consola de Amazon S3 muestra la fecha para Last Modified (Última modificación) en el panel Properties (Propiedades) del objeto. Al crear inicialmente un nuevo objeto, esta fecha refleja el momento de creación del mismo. Si se sustituye el objeto, la fecha cambia según sea necesario. Por tanto, cuando usamos el término fecha de creación, es sinónimo del término fecha de última modificación.

Al especificar el número de días en las acciones NoncurrentVersionTransition y NoncurrentVersionExpiration de una configuración de ciclo de vida, tenga en cuenta lo siguiente:

  • Es el número de días a partir del momento en el que la versión del objeto deja de ser actual (es decir, desde que se sobrescribe o se elimina un objeto), tras los cuales Amazon S3 realizará la acción en el objeto o los objetos especificados.

  • Amazon S3 calcula este momento agregando el número de días especificados en la regla a la hora en la que se creó la nueva versión sucesora del objeto, y redondea la hora resultante a la medianoche del día siguiente, UTC. Por ejemplo, supongamos que en su bucket tiene la versión actual de un objeto creado el 01/01/2014 a las 10:30 a. m. UTC. Si la nueva versión del objeto que sustituye a la versión actual se creó el 15/01/2014 a las 10:30 a. m. UTC y se especifican tres días en una regla de transición, la fecha de transición del objeto calculada será 19/01/2014 a las 00:00 UTC.

Reglas de ciclo de vida: basadas en una fecha específica

Al especificar una acción en una regla del ciclo de vida de S3, puede especificar la fecha en la que desea que Amazon S3 realice la acción. Cuando llegue la fecha específica, Amazon S3 aplicará la acción a todos los objetos cualificados (según los criterios de filtrado).

Si especifica una acción de S3 Lifecycle con una fecha en el pasado, todos los objetos cualificados serán inmediatamente aptos para esa acción de ciclo de vida.

importante

La acción basada en la fecha no es una acción puntual. Amazon S3 seguirá aplicando la acción basada en la fecha incluso después de que esta haya pasado, siempre que el estado de la regla sea Enabled.

Por ejemplo, supongamos que especifica una acción de Expiration basada en una fecha para eliminar todos los objetos (y supongamos también que la regla no especifica filtro alguno). En la fecha especificada, Amazon S3 hace que venzan todos los objetos del bucket. S3 también seguirá haciendo que venzan los nuevos objetos creados en el bucket. Para detener la acción del ciclo de vida, debe eliminar la acción de la configuración del ciclo de vida, deshabilitar la regla o eliminar la regla de la configuración del ciclo de vida.

El valor de la fecha debe estar en formato ISO 8601. La hora siempre es medianoche UTC.

nota

No puede crear reglas de Lifecycle basadas en una fecha con la consola de Amazon S3, pero sí que puede usarla para ver, deshabilitar o eliminar dichas reglas.