Configuración de un ciclo de vida en un bucket - Amazon Simple Storage Service

Configuración de un ciclo de vida en un bucket

En esta sección, se explica cómo puede establecer una configuración de S3 Lifecycle en un bucket mediante la consola de Amazon S3, el AWS Command Line Interface (AWS CLI), los AWS SDK o la API de REST de Amazon S3. Para obtener información acerca de la configuración de S3 Lifecycle, consulte Administración del ciclo de vida del almacenamiento.

Puede usar las reglas de ciclo de vida para definir acciones que quiera que realice Amazon S3 durante el periodo de vida de un objeto (por ejemplo: la transición de objetos a otra clase de almacenamiento, su archivado o su eliminación tras transcurrir un periodo de tiempo especificado).

Antes de establecer una configuración del ciclo de vida, tenga en cuenta lo siguiente:

Retraso de propagación de configuración del ciclo de vida

Cuando añade una configuración de S3 Lifecycle a un bucket, por lo general se produce un cierto desfase antes de que una configuración de ciclo de vida nueva o actualizada se propague totalmente a todos los sistemas de Amazon S3. Habrá un retraso de algunos minutos antes de que la configuración entre en vigor completamente. Este retraso también se puede producir cuando elimina una configuración de S3 Lifecycle.

Retraso de caducidad o transición

Hay un retraso entre el momento en que se cumple la regla del ciclo de vida y el momento en que se completa su aplicación. Por ejemplo, supongamos que un conjunto de objetos caduca de acuerdo con una regla del ciclo de vida el 1 de enero. Aunque la regla de caducidad se haya cumplido el 1 de enero, es posible que Amazon S3 no elimine estos objetos hasta días o incluso semanas después. Este retraso se debe a que S3 Lifecycle pone los objetos en cola para transiciones o caducidades de forma asíncrona. Sin embargo, los cambios en la facturación suelen aplicarse en cuanto se cumple la regla de ciclo de vida, incluso aunque la acción no se haya completado. Para obtener más información, consulte Cambios en la facturación. Para supervisar el efecto de las actualizaciones realizadas por las reglas del ciclo de vida activo, consulte ¿Cómo puedo supervisar las acciones que se llevan a cabo según mis reglas de ciclo de vida?.

Deshabilitación o eliminación de las reglas del ciclo de vida

Cuando se deshabilitan o eliminan reglas del ciclo de vida después de cierto retraso, Amazon S3 deja de programar la eliminación o transición de nuevos objetos. Cualquier objeto que ya haya sido programado se desprograma y no se elimina ni se traslada.

nota

Antes de actualizar, deshabilitar o eliminar las reglas del ciclo de vida, utilice las operaciones de la API de LIST (como ListObjectsV2, ListObjectVersions y ListMultipartUploads) o Inventario de Amazon S3 para comprobar que Amazon S3 haya realizado la transición y haya caducado los objetos aptos en función de sus casos de uso. Si tiene problemas para actualizar, deshabilitar o eliminar las reglas del ciclo de vida, consulte Solucionar problemas de Amazon S3 Lifecycle.

Objetos existentes y nuevos

Cuando añade una configuración de ciclo de vida a un bucket, las reglas de configuración se aplican a los objetos existentes y a los objetos que añade posteriormente. Por ejemplo, si hoy agrega una regla de configuración de Lifecycle con una acción de vencimiento que causa que objetos con un prefijo específico expiren 30 días después de la creación, Amazon S3 pondrá en cola de eliminación cualquier objeto existente con más de 30 días de antigüedad y que tenga el prefijo especificado.

Supervisión del efecto de las reglas del ciclo de vida

Para supervisar el efecto de las actualizaciones realizadas por las reglas del ciclo de vida activo, consulte ¿Cómo puedo supervisar las acciones que se llevan a cabo según mis reglas de ciclo de vida?.

Cambios en la facturación

Puede que haya un desfase entre la fecha en que se cumplen las reglas de configuración de ciclo de vida y la fecha en que se realiza la acción para cumplir la regla. Sin embargo, los cambios en la facturación se producen en cuanto se cumple la regla de configuración de ciclo de vida, incluso aunque la acción todavía no se haya realizado.

Un ejemplo es cuando no se le cobra por el almacenamiento después del tiempo de vencimiento del objeto, incluso aunque el objeto no se elimine inmediatamente. De igual modo, se le cobran las tarifas de almacenamiento de S3 Glacier Flexible Retrieval en cuanto transcurre el tiempo de transición del objeto, incluso aunque el objeto no se traslade de inmediato a la clase de almacenamiento S3 Glacier Flexible Retrieval.

Sin embargo, las transiciones del ciclo de vida a la clase de almacenamiento de S3 Intelligent-Tiering son la excepción. Los cambios en la facturación no se producen hasta después de que el objeto haya pasado a la clase de almacenamiento de S3 Intelligent-Tiering.

Varias reglas o reglas incompatibles

Cuando tiene varias reglas en una configuración de S3 Lifecycle, un objeto puede reunir los requisitos para varias acciones de S3 Lifecycle realizadas el mismo día. En tales casos, Amazon S3 sigue estas reglas generales:

  • La eliminación permanente prevalece sobre la transición.

  • La transición prevalece sobre la creación de marcadores de eliminación.

  • Cuando un objeto es apto para una transición S3 Glacier Flexible Retrieval y una transición S3 Standard-IA (o una transición S3 One Zone-IA), Amazon S3 elige la transición S3 Glacier Flexible Retrieval.

Para ver ejemplos, consulte Ejemplo 5: superposición de filtros, conflictos entre acciones de ciclo de vida y lo que hace Amazon S3 con buckets sin control de versiones.

Puede definir una regla de Lifecycle para todos los objetos o para un subconjunto de objetos del bucket mediante un prefijo compartido (nombres de objetos que comienzan por una cadena común) o una etiqueta. En la regla de Lifecycle, puede definir acciones específicas para las versiones de objetos actualizadas y no actualizadas. Para más información, consulte los siguientes temas:

Para crear una regla de ciclo de vida
  1. Inicie sesión en la AWS Management Console y abra la consola de Amazon S3 en https://console.aws.amazon.com/s3/.

  2. En la lista Buckets, seleccione el nombre del bucket para el que desea crear una regla de ciclo de vida.

  3. Seleccione la pestaña Management (Administración) y seleccione Create lifecycle rule (Crear regla de ciclo de vida).

  4. En Lifecycle rule name (Nombre de regla de ciclo de vida), escriba un nombre para la regla.

    El nombre debe ser único dentro del bucket.

  5. Elija el ámbito de la regla de ciclo de vida:

    • Para aplicar esta regla de ciclo de vida a todos los objetos con un prefijo o etiqueta específicos, elija Limit the scope to specific prefixes or tags (Limitar el ámbito a prefijos o etiquetas específicos).

      • Para limitar el ámbito por prefijo, en Prefix (Prefijo), escriba el prefijo.

      • Para limitar el ámbito por etiqueta, seleccione Add tag (Agregar etiqueta) e introduzca la clave y el valor de la etiqueta.

      Para obtener más información acerca de los prefijos de nombre de objeto, consulte Creación de nombres de clave de objeto. Para obtener más información acerca de las etiquetas de objeto, consulte Categorización del almacenamiento mediante etiquetas.

    • Para aplicar esta regla del ciclo de vida a todos los objetos del bucket, seleccione Esta regla se aplica a todos los objetos del bucket y, a continuación, elija Reconozco que esta regla se aplica a todos los objetos del bucket.

  6. Para filtrar una regla por tamaño de objeto, puede seleccionar Especificar el tamaño mínimo de objeto, Especificar tamaño máximo de objeto o ambas opciones.

    • Cuando especifica un valor en Tamaño mínimo de objeto o Tamaño máximo de objeto, este debe ser superior a 0 bytes y hasta 5 TB. Puede indicar este valor en bytes, KB, MB o GB.

    • Cuando especifica ambos valores, el tamaño máximo de objeto debe ser superior al tamaño mínimo de objeto.

      nota

      Los filtros Tamaño mínimo de objeto y Tamaño máximo de objeto excluyen los valores especificados. Por ejemplo, si configura un filtro para que caduquen los objetos con un tamaño mínimo de objeto de 128 KB, los objetos que tengan exactamente 128 KB no caducarán. En cambio, la regla solo se aplica a los objetos que tengan un tamaño superior a 128 KB.

  7. En Lifecycle rule actions (Acciones de regla de ciclo de vida), elija las acciones que desea que realice la regla de ciclo de vida:

    • Realizar la transición de versiones de objetos actuales entre clases de almacenamiento

    • Realizar la transición de versiones de objetos anteriores entre clases de almacenamiento

    • Caducar las versiones de objetos actuales

      nota

      En el caso de los buckets que no tengan habilitado el control de versiones de S3, la caducidad de las versiones actuales hace que Amazon S3 elimine los objetos de forma permanente. Para obtener más información, consulte Acciones de ciclo de vida y estado de control de versiones del bucket.

    • Eliminar permanentemente versiones de objetos anteriores

    • Eliminar marcadores de eliminación caducados o cargas multiparte incompletas

    Dependiendo de las acciones que elija, aparecerán diferentes opciones.

  8. Para realizar la transición de versiones de objetos actuales entre clases de almacenamiento, en Transition current versions of objects between storage classes (Realizar la transición de versiones de objetos actuales entre clases de almacenamiento):

    1. En Transiciones de clase de almacenamiento, seleccione la clase de almacenamiento a la que quiera realizar la transición. Para ver una lista de posibles transiciones, consulte Transiciones del ciclo de vida admitidas. Puede elegir entre las siguientes clases de almacenamiento:

      • S3 Standard-IA

      • S3 Intelligent-Tiering

      • S3 One Zone-IA

      • S3 Glacier Flexible Retrieval

      • S3 Glacier Deep Archive

    2. En Days after object creation (Días después de la creación del objeto), introduzca el número de días posteriores a la creación del objeto en los que quiera realizar la transición.

    Para obtener más información acerca de las clases de almacenamiento, consulte Uso de las clases de almacenamiento de Amazon S3. Puede definir transiciones para versiones de objetos actuales o anteriores, o tanto para las actuales como para las anteriores. El control de versiones le permite mantener varias versiones de un objeto en un bucket. Para obtener más información sobre el control de versiones, consulte Uso de la consola de S3.

    importante

    Si elige la clase de almacenamiento S3 Glacier Flexible Retrieval o Glacier Deep Archive, los objetos permanecen en Amazon S3. No puede acceder a ellos directamente a través del servicio independiente de Amazon S3 Glacier. Para obtener más información, consulte Transición de objetos con Amazon S3 Lifecycle.

  9. Para realizar la transición de versiones de objetos no actuales entre clases de almacenamiento, en Transition noncurrent versions of objects between storage classes (Realizar la transición de versiones de objetos no actuales entre clases de almacenamiento):

    1. En Transiciones de clase de almacenamiento, seleccione la clase de almacenamiento a la que quiera realizar la transición. Para ver una lista de posibles transiciones, consulte Transiciones del ciclo de vida admitidas. Puede elegir entre las siguientes clases de almacenamiento:

      • S3 Standard-IA

      • S3 Intelligent-Tiering

      • S3 One Zone-IA

      • S3 Glacier Flexible Retrieval

      • S3 Glacier Deep Archive

    2. En Days after object becomes non-current (Días después de que el objeto se vuelve no actual), introduzca el número de días posteriores a la creación del objeto en los que quiera realizar la transición.

  10. Para hacer caducar versiones de objetos actuales, en Expire current versions of objects (Hacer caducar versiones de objetos actuales), en Number of days after object creation (Número de días después de la creación del objeto), ingrese el número de días.

    importante

    En un bucket sin control de versiones, la acción de vencimiento da como resultado que Amazon S3 elimine de forma permanente el objeto. Para obtener más información sobre las acciones del ciclo de vida, consulte Elementos para describir las acciones del ciclo de vida.

  11. Para eliminar de manera permanente versiones anteriores de objetos, en Permanently delete noncurrent versions of objects (Eliminar de manera permanente versiones no actuales de objetos), en Days after objects become noncurrent (Días después de que los objetos se vuelven no actuales), escriba el número de días. Puede especificar opcionalmente el número de versiones más recientes que desea retener introduciendo un valor en Number of newer versions to retain (Número de versiones más recientes que se deben retener).

  12. Bajo Delete expired markers or incomplete multipart uploads (Eliminar marcadores caducados o cargas multiparte incompletas), seleccione Delete expired object delete markers (Eliminar marcadores de eliminación de objetos caducados) y Delete incomplete multipart uploads (Eliminar cargas multiparte incompletas). A continuación, escriba el número de días que han de transcurrir entre el inicio de la carga multiparte y el momento en que quiera finalizarla y limpiar las cargas incompletas.

    Para obtener más información acerca de las cargas multipartes, consulte Carga y copia de objetos con la carga multiparte.

  13. Elija Create rule (Crear regla).

    Si la regla no contiene ningún error, Amazon S3 la habilita y se puede ver en la ficha Management (Administración) en Lifecycle rules (Reglas del ciclo de vida).

Para obtener información sobre el uso de plantillas de AWS CloudFormation y algunos ejemplos, consulte Trabajo con plantillas de AWS CloudFormation y AWS::S3::Bucket en la Guía del usuario de AWS CloudFormation.

Puede utilizar los siguientes comandos de la AWS CLI para administrar configuraciones de ciclo de vida de S3:

  • put-bucket-lifecycle-configuration

  • get-bucket-lifecycle-configuration

  • delete-bucket-lifecycle

Para obtener instrucciones acerca de cómo configurar la AWS CLI, consulte Desarrollo con Amazon S3 mediante la AWS CLI.

La configuración de Amazon S3 Lifecycle es un archivo XML. Pero cuando se usa la AWS CLI no se puede especificar el formato XML. Debe especificar el formato JSON en su lugar. A continuación, se indican ejemplos de configuraciones de Lifecycle de XML y las configuraciones de JSON equivalentes que puede especificar en un comando de AWS CLI.

Considere la siguiente configuración de S3 Lifecycle de ejemplo:

ejemplo Ejemplo 1
XML
<LifecycleConfiguration> <Rule> <ID>ExampleRule</ID> <Filter> <Prefix>documents/</Prefix> </Filter> <Status>Enabled</Status> <Transition> <Days>365</Days> <StorageClass>GLACIER</StorageClass> </Transition> <Expiration> <Days>3650</Days> </Expiration> </Rule> </LifecycleConfiguration>
JSON
{ "Rules": [ { "Filter": { "Prefix": "documents/" }, "Status": "Enabled", "Transitions": [ { "Days": 365, "StorageClass": "GLACIER" } ], "Expiration": { "Days": 3650 }, "ID": "ExampleRule" } ] }
ejemplo Ejemplo 2
XML
<LifecycleConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> <Rule> <ID>id-1</ID> <Expiration> <Days>1</Days> </Expiration> <Filter> <And> <Prefix>myprefix</Prefix> <Tag> <Key>mytagkey1</Key> <Value>mytagvalue1</Value> </Tag> <Tag> <Key>mytagkey2</Key> <Value>mytagvalue2</Value> </Tag> </And> </Filter> <Status>Enabled</Status> </Rule> </LifecycleConfiguration>
JSON
{ "Rules": [ { "ID": "id-1", "Filter": { "And": { "Prefix": "myprefix", "Tags": [ { "Value": "mytagvalue1", "Key": "mytagkey1" }, { "Value": "mytagvalue2", "Key": "mytagkey2" } ] } }, "Status": "Enabled", "Expiration": { "Days": 1 } } ] }

Puede probar la put-bucket-lifecycle-configuration de la siguiente manera.

Para probar la configuración
  1. Guarde la configuración de Lifecycle de JSON en un archivo (por ejemplo, lifecycle.json).

  2. Ejecute el siguiente comando de la AWS CLI para establecer la configuración del ciclo de vida en su bucket. Reemplace los user input placeholders con su propia información.

    $ aws s3api put-bucket-lifecycle-configuration  \ --bucket amzn-s3-demo-bucket  \ --lifecycle-configuration file://lifecycle.json
  3. Para verificar, recupere la configuración de S3 Lifecycle con el comando get-bucket-lifecycle-configuration de la AWS CLI de la siguiente manera:

    $ aws s3api get-bucket-lifecycle-configuration  \ --bucket amzn-s3-demo-bucket
  4. Para eliminar la configuración de S3 Lifecycle, utilice el comando delete-bucket-lifecycle de la AWS CLI de la siguiente manera.

    aws s3api delete-bucket-lifecycle \ --bucket amzn-s3-demo-bucket
Java

Puede utilizar AWS SDK for Java para administrar la configuración del ciclo de vida de S3 de un bucket. Para obtener más información acerca de cómo administrar la configuración de S3 Lifecycle, consulte Administración del ciclo de vida del almacenamiento.

nota

Cuando añade una configuración de S3 Lifecycle a un bucket, Amazon S3 reemplaza la configuración de Lifecycle actual, si la hubiera. Para actualizar una configuración, debe recuperarla, hacer los cambios deseados y luego añadir la configuración revisada al bucket.

El siguiente ejemplo muestra cómo usar AWS SDK for Java para añadir, actualizar y eliminar una configuración de ciclo de vida de un bucket. En el ejemplo se realiza lo siguiente:

  • Añade una configuración de ciclo de vida a un bucket.

  • Recupera la configuración de ciclo de vida y la actualiza añadiendo otra regla.

  • Añade la configuración de Lifecycle modificada al bucket. Amazon S3 reemplaza la configuración existente.

  • Recupera la configuración de nuevo y verifica que tiene el número correcto de reglas imprimiendo el número de reglas.

  • Elimina la configuración de nuevo y verifica que se ha eliminado intentando volver a recuperarla.

Para obtener instrucciones sobre cómo crear y probar una muestra funcional, consulte Introducción en la Guía del desarrollador de AWS SDK for Java.

import com.amazonaws.AmazonServiceException; import com.amazonaws.SdkClientException; import com.amazonaws.auth.profile.ProfileCredentialsProvider; import com.amazonaws.regions.Regions; import com.amazonaws.services.s3.AmazonS3; import com.amazonaws.services.s3.AmazonS3ClientBuilder; import com.amazonaws.services.s3.model.BucketLifecycleConfiguration; import com.amazonaws.services.s3.model.BucketLifecycleConfiguration.Transition; import com.amazonaws.services.s3.model.StorageClass; import com.amazonaws.services.s3.model.Tag; import com.amazonaws.services.s3.model.lifecycle.LifecycleAndOperator; import com.amazonaws.services.s3.model.lifecycle.LifecycleFilter; import com.amazonaws.services.s3.model.lifecycle.LifecyclePrefixPredicate; import com.amazonaws.services.s3.model.lifecycle.LifecycleTagPredicate; import java.io.IOException; import java.util.Arrays; public class LifecycleConfiguration { public static void main(String[] args) throws IOException { Regions clientRegion = Regions.DEFAULT_REGION; String bucketName = "*** Bucket name ***"; // Create a rule to archive objects with the "glacierobjects/" prefix to Glacier // immediately. BucketLifecycleConfiguration.Rule rule1 = new BucketLifecycleConfiguration.Rule() .withId("Archive immediately rule") .withFilter(new LifecycleFilter(new LifecyclePrefixPredicate("glacierobjects/"))) .addTransition(new Transition().withDays(0).withStorageClass(StorageClass.Glacier)) .withStatus(BucketLifecycleConfiguration.ENABLED); // Create a rule to transition objects to the Standard-Infrequent Access storage // class // after 30 days, then to Glacier after 365 days. Amazon S3 will delete the // objects after 3650 days. // The rule applies to all objects with the tag "archive" set to "true". BucketLifecycleConfiguration.Rule rule2 = new BucketLifecycleConfiguration.Rule() .withId("Archive and then delete rule") .withFilter(new LifecycleFilter(new LifecycleTagPredicate(new Tag("archive", "true")))) .addTransition(new Transition().withDays(30) .withStorageClass(StorageClass.StandardInfrequentAccess)) .addTransition(new Transition().withDays(365).withStorageClass(StorageClass.Glacier)) .withExpirationInDays(3650) .withStatus(BucketLifecycleConfiguration.ENABLED); // Add the rules to a new BucketLifecycleConfiguration. BucketLifecycleConfiguration configuration = new BucketLifecycleConfiguration() .withRules(Arrays.asList(rule1, rule2)); try { AmazonS3 s3Client = AmazonS3ClientBuilder.standard() .withCredentials(new ProfileCredentialsProvider()) .withRegion(clientRegion) .build(); // Save the configuration. s3Client.setBucketLifecycleConfiguration(bucketName, configuration); // Retrieve the configuration. configuration = s3Client.getBucketLifecycleConfiguration(bucketName); // Add a new rule with both a prefix predicate and a tag predicate. configuration.getRules().add(new BucketLifecycleConfiguration.Rule().withId("NewRule") .withFilter(new LifecycleFilter(new LifecycleAndOperator( Arrays.asList(new LifecyclePrefixPredicate("YearlyDocuments/"), new LifecycleTagPredicate(new Tag( "expire_after", "ten_years")))))) .withExpirationInDays(3650) .withStatus(BucketLifecycleConfiguration.ENABLED)); // Save the configuration. s3Client.setBucketLifecycleConfiguration(bucketName, configuration); // Retrieve the configuration. configuration = s3Client.getBucketLifecycleConfiguration(bucketName); // Verify that the configuration now has three rules. configuration = s3Client.getBucketLifecycleConfiguration(bucketName); System.out.println("Expected # of rules = 3; found: " + configuration.getRules().size()); // Delete the configuration. s3Client.deleteBucketLifecycleConfiguration(bucketName); // Verify that the configuration has been deleted by attempting to retrieve it. configuration = s3Client.getBucketLifecycleConfiguration(bucketName); String s = (configuration == null) ? "No configuration found." : "Configuration found."; System.out.println(s); } catch (AmazonServiceException e) { // The call was transmitted successfully, but Amazon S3 couldn't process // it, so it returned an error response. e.printStackTrace(); } catch (SdkClientException e) { // Amazon S3 couldn't be contacted for a response, or the client // couldn't parse the response from Amazon S3. e.printStackTrace(); } } }
.NET

Puede utilizar AWS SDK for .NET para administrar la configuración del ciclo de vida de S3 en un bucket. Para obtener más información acerca de cómo administrar la configuración del ciclo de vida, consulte Administración del ciclo de vida del almacenamiento.

nota

Cuando añade una configuración de ciclo de vida, Amazon S3 reemplaza la configuración existente en el bucket especificado. Para actualizar una configuración, primero debe recuperar la configuración de ciclo de vida existente, hacer los cambios y luego añadir la configuración de ciclo de vida revisada al bucket.

El siguiente ejemplo muestra cómo usar AWS SDK for .NET para añadir, actualizar y eliminar una configuración de ciclo de vida de un bucket. Este ejemplo de código hace lo siguiente:

  • Añade una configuración de ciclo de vida a un bucket.

  • Recupera la configuración de ciclo de vida y la actualiza añadiendo otra regla.

  • Añade la configuración de Lifecycle modificada al bucket. Amazon S3 reemplaza la configuración de ciclo de vida existente.

  • Recupera la configuración de nuevo y la verifica imprimiendo el número de reglas en la configuración.

  • Elimina la configuración del ciclo de vida y verifica la eliminación.

Para obtener información acerca de cómo configurar y ejecutar ejemplos de código, consulte Introducción al SDK de AWS para .NET en la Guía para desarrolladores del SDK de AWS para .NET.

using Amazon; using Amazon.S3; using Amazon.S3.Model; using System; using System.Collections.Generic; using System.Threading.Tasks; namespace Amazon.DocSamples.S3 { class LifecycleTest { private const string bucketName = "*** bucket name ***"; // Specify your bucket region (an example region is shown). private static readonly RegionEndpoint bucketRegion = RegionEndpoint.USWest2; private static IAmazonS3 client; public static void Main() { client = new AmazonS3Client(bucketRegion); AddUpdateDeleteLifecycleConfigAsync().Wait(); } private static async Task AddUpdateDeleteLifecycleConfigAsync() { try { var lifeCycleConfiguration = new LifecycleConfiguration() { Rules = new List<LifecycleRule> { new LifecycleRule { Id = "Archive immediately rule", Filter = new LifecycleFilter() { LifecycleFilterPredicate = new LifecyclePrefixPredicate() { Prefix = "glacierobjects/" } }, Status = LifecycleRuleStatus.Enabled, Transitions = new List<LifecycleTransition> { new LifecycleTransition { Days = 0, StorageClass = S3StorageClass.Glacier } }, }, new LifecycleRule { Id = "Archive and then delete rule", Filter = new LifecycleFilter() { LifecycleFilterPredicate = new LifecyclePrefixPredicate() { Prefix = "projectdocs/" } }, Status = LifecycleRuleStatus.Enabled, Transitions = new List<LifecycleTransition> { new LifecycleTransition { Days = 30, StorageClass = S3StorageClass.StandardInfrequentAccess }, new LifecycleTransition { Days = 365, StorageClass = S3StorageClass.Glacier } }, Expiration = new LifecycleRuleExpiration() { Days = 3650 } } } }; // Add the configuration to the bucket. await AddExampleLifecycleConfigAsync(client, lifeCycleConfiguration); // Retrieve an existing configuration. lifeCycleConfiguration = await RetrieveLifecycleConfigAsync(client); // Add a new rule. lifeCycleConfiguration.Rules.Add(new LifecycleRule { Id = "NewRule", Filter = new LifecycleFilter() { LifecycleFilterPredicate = new LifecyclePrefixPredicate() { Prefix = "YearlyDocuments/" } }, Expiration = new LifecycleRuleExpiration() { Days = 3650 } }); // Add the configuration to the bucket. await AddExampleLifecycleConfigAsync(client, lifeCycleConfiguration); // Verify that there are now three rules. lifeCycleConfiguration = await RetrieveLifecycleConfigAsync(client); Console.WriteLine("Expected # of rulest=3; found:{0}", lifeCycleConfiguration.Rules.Count); // Delete the configuration. await RemoveLifecycleConfigAsync(client); // Retrieve a nonexistent configuration. lifeCycleConfiguration = await RetrieveLifecycleConfigAsync(client); } catch (AmazonS3Exception e) { Console.WriteLine("Error encountered ***. Message:'{0}' when writing an object", e.Message); } catch (Exception e) { Console.WriteLine("Unknown encountered on server. Message:'{0}' when writing an object", e.Message); } } static async Task AddExampleLifecycleConfigAsync(IAmazonS3 client, LifecycleConfiguration configuration) { PutLifecycleConfigurationRequest request = new PutLifecycleConfigurationRequest { BucketName = bucketName, Configuration = configuration }; var response = await client.PutLifecycleConfigurationAsync(request); } static async Task<LifecycleConfiguration> RetrieveLifecycleConfigAsync(IAmazonS3 client) { GetLifecycleConfigurationRequest request = new GetLifecycleConfigurationRequest { BucketName = bucketName }; var response = await client.GetLifecycleConfigurationAsync(request); var configuration = response.Configuration; return configuration; } static async Task RemoveLifecycleConfigAsync(IAmazonS3 client) { DeleteLifecycleConfigurationRequest request = new DeleteLifecycleConfigurationRequest { BucketName = bucketName }; await client.DeleteLifecycleConfigurationAsync(request); } } }
Ruby

Puede utilizar AWS SDK for Ruby para administrar la configuración del ciclo de vida de S3 en un bucket con la clase AWS::S3::BucketLifecycleConfiguration. Para obtener más información acerca de cómo administrar la configuración del ciclo de vida, consulte Administración del ciclo de vida del almacenamiento.

En las secciones siguientes de la referencia de la API de Amazon Simple Storage Service se describe la API de REST relacionada con la configuración de S3 Lifecycle.

Solución de problemas del ciclo de vida

Para ver problemas habituales que pueden producirse al trabajar con S3 Lifecycle, consulte Solucionar problemas de Amazon S3 Lifecycle.