Elementos de configuración del ciclo de vida
Una configuración de S3 Lifecycle consta de reglas de ciclo de vida que incluyen varios elementos que describen las acciones que Amazon S3 lleva a cabo durante la vida útil de los objetos. La configuración de Amazon S3 Lifecycle se especifica mediante un XML que consta de una o varias reglas de Lifecycle y cada una de ellas consta de uno o más elementos.
<LifecycleConfiguration> <Rule> <Element> </Rule> <Rule> <Element> <Element> </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 a 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.
Temas
En las siguientes secciones se describen los elementos XML de una configuración de S3 Lifecycle. Para ver configuraciones de ejemplo, consulte Ejemplos de configuraciones 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 S3 Lifecycle 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.
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). Para obtener ejemplos y más información acerca de estos filtros, consulte Adición de filtros a reglas de Lifecycle.
-
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 de Lifecycle se aplica a los objetoslogs/mylog.txt
,logs/temp1.txt
ylogs/test.txt
. La regla no se aplica al objetoexample.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 Lifecycle para objetos con los prefijos de clave
projectA/
yprojectB/
, 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 Denominación de objetos de Amazon S3.
-
Especificación de un filtro mediante etiquetas de objetos: en el siguiente ejemplo, la regla de Lifesycle especifica un filtro basado en una etiqueta (
) y valor (key
). La regla se aplica solo a un subconjunto de objetos que tengan la etiqueta específica.value
<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>
, tal y como se muestra 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. Si especifica solo un elemento
<Key>
y no especifica ningún elemento<Value>
, la regla se aplicará únicamente a los objetos que coincidan con la clave de la etiqueta y que no tengan un valor especificado. -
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 el prefijo como una o varias etiquetas de objetos: en una regla de Lifecycle, 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 de filtro con el elemento
<And>
como se muestra a continuación:<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 mediante el operador lógico
AND
. Es decir, la regla se aplica al subconjunto de objetos con el prefijo de clave específico y las 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. De forma predeterminada, los objetos de menos de 128 KB no pasarán a ninguna clase de almacenamiento, a menos que especifique un tamaño mínimo menor (
ObjectSizeGreaterThan
) o un tamaño máximo (ObjectSizeLessThan
). Para obtener más información, consulte Ejemplo: Permitir la transición de objetos de menos de 128 KB.<LifecycleConfiguration> <Rule> <Filter> <ObjectSizeGreaterThan>500</ObjectSizeGreaterThan> </Filter> <Status>Enabled</Status>
transition/expiration actions
</Rule> </LifecycleConfiguration>nota
Los filtros
ObjectSizeGreaterThan
yObjectSizeLessThan
excluyen los valores especificados. Por ejemplo, si establece objetos con un tamaño que abarca desde los 128 KB hasta los 1024 KB para pasar de la clase de almacenamiento S3 Standard a la clase de almacenamiento S3 Standard-IA, los objetos que tienen un tamaño exacto de 1024 KB y de 128 KB no pasarán a S3 Standard-IA. En cambio, la regla se aplicará únicamente a los objetos que tengan un tamaño superior a 128 KB e inferior a 1024 KB.Si especifica un rango de tamaño de objeto, el número entero
ObjectSizeGreaterThan
debe ser menor que valorObjectSizeLessThan
. 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
Transition
: puede especificar la acciónTransition
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. 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ónNoncurrentVersionTransition
(que se describe más adelante en este tema).
-
Elemento de acción
Expiration
: la acciónExpiration
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 Descripción y administración de 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 Eliminación de marcadores de eliminación de objetos vencidos en un bucket con control de versiones habilitado.
Para obtener más información, consulte Retención de varias versiones de objetos con Control de versiones 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 deben retenerse (entre 1 y 100). 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. Amazon S3 realizará la transición de cualquier versión no actual adicional más allá del número especificado para conservar.Para especificar la cantidad máxima de versiones no actuales, es necesario proporcionar un elemento
Filter
. Si no especifica un elementoFilter
, Amazon S3 genera un errorInvalidRequest
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. 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. Estos 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 deben retenerse (entre 1 y 100). 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. Amazon S3 eliminará de forma definitiva cualquier versión no actual adicional que supere el número especificado para conservar.Para especificar la cantidad máxima de versiones no actuales, es necesario proporcionar un elemento
Filter
. Si no especifica un elementoFilter
, Amazon S3 genera un errorInvalidRequest
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 accidentephoto.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 dephoto.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 de Lifecycle para el vencimiento y se eliminará permanentementephoto.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 Lifecycle
AbortIncompleteMultipartUpload
que se describe más adelante en esta sección.
Además de las acciones de transición y vencimiento, puede usar las siguientes acciones de configuración de Lifecycle para ordenar a Amazon S3 que detenga las cargas multiparte incompletas o eliminar los marcadores de eliminación de objetos que vencieron.
-
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 claveprefix
especificado en la regla de Lifecycle) no se completan satisfactoriamente en el período 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 Lifecycle en una regla que tenga un filtro que use 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 de Lifecycle para ordenar a S3 que elimine los marcadores de eliminación del objetos vencidos. Para ver un ejemplo, consulte Eliminación de marcadores de eliminación de objetos vencidos en un bucket con control de versiones habilitado.nota
No puede especificar esta acción de Lifecycle en una regla que tenga un filtro que use 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 Restaurar versiones anteriores, puede usar cualquiera de los siguientes dos métodos para recuperar versiones anteriores de un objeto:
-
Método 1: 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.
-
Método 2: 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 Método 1.
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 a todos los sistemas de Amazon S3. (Por lo tanto, es posible que Amazon S3 desconozca temporalmente esta 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 ello, copiar la versión antigua, como se recomienda en el Método 1, es la alternativa más segura.
Acciones de ciclo de vida y estado de control de versiones del bucket
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 contiene dichos objetos.
Acción | Bucket sin control de versiones (control de versiones no habilitado) | Bucket con control de versiones habilitado | Bucket con control de versiones suspendido |
---|---|---|---|
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. |
Cuando se llega a una fecha o periodo de tiempo específico en la vida útil del objeto. |
La acción Expiration elimina la versión no actual del 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. | La acción de Lifecycle 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 Expiration elimina permanentemente esta versión. De lo contrario, se conservará la versión actual como versión no actual. |
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. |
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 permanentemente la versión no actual del objeto y 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 período de tiempo, en número de días a partir de la creación (o modificación) del objeto, en el que Amazon S3 puede llevar a cabo la acción especificada.
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:
-
El valor que especifique es el número de días desde 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, hora 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 de 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 objeto. Si se sustituye el objeto, la fecha cambia según sea necesario. Por lo tanto, la fecha de creación es sinónimo de la 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:
-
El valor que especifica 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, hora 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 Lifecycle.
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 ningún filtro). En la fecha especificada, Amazon S3 hace que venzan todos los objetos del bucket. Amazon S3 también seguirá haciendo que venzan los nuevos objetos creados en el bucket. Para detener la acción de Lifecycle, debe eliminar la acción de la regla de Lifecycle, deshabilitar la regla o eliminar la regla de la configuración de Lifecycle.
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 esas reglas.