Configuration d'une configuration S3 Lifecycle sur un bucket - Amazon Simple Storage Service

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Configuration d'une configuration S3 Lifecycle sur un bucket

Vous pouvez définir une configuration du cycle de vie Amazon S3 sur un compartiment en utilisant la console Amazon S3, le AWS Command Line Interface (AWS CLI) AWS SDKs, le ou Amazon S3 RESTAPI. Pour plus d’informations sur la configuration de cycle de vie S3, consultez Gestion du cycle de vie des objets.

Dans votre configuration S3 Lifecycle, vous utilisez des règles de cycle de vie pour définir les actions que vous souhaitez qu'Amazon S3 entreprenne pendant le cycle de vie d'un objet. Par exemple, vous pouvez définir des règles pour transférer des objets vers une autre classe de stockage, archiver des objets ou faire expirer (supprimer) des objets après une période spécifiée.

Considérations du cycle de vie S3

Avant de définir une configuration de cycle de vie, veuillez noter ce qui suit :

Délai de propagation des configurations du cycle de vie

Quand vous ajoutez une configuration de cycle de vie S3 à un compartiment, il y a habituellement un certain délai avant que la nouvelle configuration de cycle de vie ou celle qui a été mise à jour ne soit totalement appliquée à tous les systèmes Amazon S3. Il faut attendre quelques minutes avant que la configuration ne prenne effet. Ce décalage peut également se produire lors de la suppression d'une configuration de cycle de vie S3.

Délai de transition ou d'expiration

Il y a un délai entre le moment où une règle de cycle de vie est satisfaite et le moment où l'action correspondant à la règle est terminée. Supposons, par exemple, qu'un ensemble d'objets soit expiré par une règle de cycle de vie le 1er janvier. Même si la règle d'expiration a été respectée le 1er janvier, il est possible qu'Amazon S3 ne supprime réellement ces objets que des jours, voire des semaines plus tard. Ce délai est dû au fait que S3 Lifecycle met en file d'attente des objets pour des transitions ou des expirations de manière asynchrone. Toutefois, les modifications apportées à la facturation sont généralement appliquées lorsque la règle du cycle de vie est respectée, même si l'action n'est pas terminée. Pour plus d'informations, consultez la section Modifications apportées à la facturation. Pour surveiller l'effet des mises à jour effectuées par les règles de cycle de vie actives, voir Comment puis-je contrôler les mesures prises conformément à mes règles de cycle de vie ?

Mettre à jour, désactiver ou supprimer des règles de cycle de vie

Lorsque vous désactivez ou supprimez les règles de cycle de vie, Amazon S3 arrête de planifier la suppression ou la transition de nouveaux objets après un bref délai. Tous les objets déjà planifiés sont déprogrammés et ne sont ni supprimés ni transférés.

Note

Avant de mettre à jour, de désactiver ou de supprimer les règles du cycle de vie, utilisez les LIST API opérations (telles que ListObjectsV2, ListObjectVersions, et ListMultipartUploads) ou Catalogage et analyse de vos données avec S3 Inventory pour vérifier qu'Amazon S3 a transféré et expiré les objets éligibles en fonction de vos cas d'utilisation. Si vous rencontrez des problèmes lors de la mise à jour, de la désactivation ou de la suppression des règles de cycle de vie, consultezRésolution des problèmes liés au cycle de vie d'Amazon S3.

Objets existants et nouveaux

Quand vous ajoutez une configuration de cycle de vie dans un compartiment, les règles de configuration s'appliquent à la fois aux objets existants et à ceux que vous ajouterez ultérieurement. Par exemple, si vous ajoutez une règle de configuration du cycle de vie aujourd'hui avec une action d'expiration qui fait expirer les objets dotés d'un préfixe spécifique 30 jours après leur création, Amazon S3 mettra en file d'attente pour suppression tous les objets existants âgés de plus de 30 jours et portant le préfixe spécifié.

Surveillance de l'effet des règles relatives au cycle de vie

Pour surveiller l'effet des mises à jour effectuées par les règles de cycle de vie actives, voir Comment puis-je contrôler les mesures prises conformément à mes règles de cycle de vie ?

Modifications apportées à la facturation

Il peut y avoir un décalage entre le moment où les règles de configuration du cycle de vie sont satisfaites et le moment où l'action déclenchée par le respect de la règle est prise. Cependant, les modifications de facturation se produisent dès que la règle de configuration du cycle de vie est satisfaite, même si aucune mesure n'est encore prise.

Par exemple, après le délai d'expiration de l'objet, le stockage ne vous est pas facturé, même si l'objet n'est pas supprimé immédiatement. De même, dès que le délai de transition de l'objet est écoulé, les frais de stockage S3 Glacier Flexible Retrieval vous sont facturés, même si l'objet n'est pas immédiatement transféré vers la classe de stockage S3 Glacier Flexible Retrieval.

Toutefois, les transitions du cycle de vie vers la classe de stockage S3 Intelligent-Tiering constituent une exception. Les modifications de facturation ne se produisent qu'après la transition de l'objet vers la classe de stockage S3 Intelligent-Tiering.

Règles multiples ou contradictoires

Lorsqu'une configuration S3 Lifecycle comporte plusieurs règles, un objet peut devenir éligible à plusieurs actions du cycle de vie S3 le même jour. Dans de tels cas, Amazon S3 suit les règles générales suivantes :

  • La suppression permanente a priorité sur la transition.

  • La transition a priorité sur la création de marqueurs de suppression.

  • Lorsqu'un objet est éligible à la fois à une transition S3 Glacier Flexible Retrieval et à une transition S3 Standard-IA (ou S3 One Zone-IA), Amazon S3 choisit la transition S3 Glacier Flexible Retrieval.

Pour obtenir des exemples, consultez Exemples de filtres qui se chevauchent et d'actions de cycle de vie conflictuelles.

Comment définir une configuration S3 Lifecycle

Vous pouvez définir une configuration du cycle de vie Amazon S3 sur un compartiment en utilisant la console Amazon S3, le AWS Command Line Interface (AWS CLI) AWS SDKs, le ou Amazon S3 RESTAPI.

Pour plus d'informations sur les AWS CloudFormation modèles et les exemples, voir Utilisation des AWS CloudFormation modèles et AWS::S3::Bucket dans le guide de l'utilisateur AWS CloudFormation .

Vous pouvez définir des règles de cycle de vie pour tous les objets ou pour un sous-ensemble d'objets d'un bucket à l'aide d'un préfixe partagé (noms d'objets commençant par une chaîne commune) ou d'une balise. Dans votre règle de cycle de vie, vous pouvez définir des actions spécifiques aux versions actuelles et non actuelles de l'objet. Pour plus d’informations, consultez les ressources suivantes :

Pour créer une stratégie de cycle de vie
  1. Connectez-vous à la console Amazon S3 AWS Management Console et ouvrez-la à l'adresse https://console.aws.amazon.com/s3/.

  2. Dans la liste Buckets (Compartiments), choisissez le nom du compartiment pour lequel vous souhaitez créer une stratégie de cycle de vie.

  3. Choisissez l'onglet Management (Gestion), puis choisissez Create lifecycle rule (Créer une règle de cycle de vie).

  4. Dans Lifecycle rule name (Nom de la règle du cycle de vie), saisissez un nom pour votre règle.

    Ce nom doit être unique dans le compartiment.

  5. Choisissez l'étendue de la règle de cycle de vie :

    • Pour appliquer cette règle de cycle de vie à tous les objets avec un préfixe ou une balise spécifique, choisissez Limiter la portée à des préfixes ou balises spécifiques.

      • Pour limiter l'étendue par préfixe, saisissez le préfixe dans Prefix (Préfixe).

      • Pour limiter l'étendue par balise, choisissez Add tag (Ajouter une balise), puis saisissez la clé et la valeur de la balise.

      Pour en savoir plus sur les préfixes de nom d'objet, veuillez consulter Dénomination des objets Amazon S3. Pour en savoir plus sur les balises d'objet, consultez Catégorisation de votre stockage à l'aide de balises.

    • Pour appliquer cette règle de cycle de vie à tous les objets du compartiment, choisissez Cette règle s'applique à tous les objets du compartiment, puis choisissez Je reconnais que cette règle s'applique à tous les objets du compartiment.

  6. Pour filtrer une règle par taille d'objet, vous pouvez sélectionner Spécifier la taille minimale de l'objet, Spécifier la taille maximale de l'objet ou les deux options.

    • Lorsque vous spécifiez une valeur pour la taille minimale de l'objet ou la taille maximale de l'objet, la valeur doit être supérieure à 0 octet et maximale de 5 To. Vous pouvez spécifier cette valeur en octets, Ko, Mo ou Go.

    • Lorsque vous spécifiez les deux valeurs, la taille maximale de l'objet doit être supérieure à la taille minimale de l'objet.

      Note

      Les filtres Taille d'objet minimale et Taille maximale d'objet excluent les valeurs spécifiées. Par exemple, si vous définissez un filtre pour faire expirer les objets dont la taille minimale est de 128 Ko, les objets dont la taille est exactement de 128 Ko n'expirent pas. Au lieu de cela, la règle s'applique uniquement aux objets dont la taille est supérieure à 128 Ko.

  7. Sous Lifecycle rule actions (Actions de règle de cycle de vie), choisissez les actions que votre règle de cycle de vie doit effectuer :

    • Transition current versions of objects between storage classes (Transition des versions actuelles des objets entre les classes de stockage)

    • Transition previous versions of objects between storage classes (Transition des versions précédentes des objets entre les classes de stockage)

    • Expire current versions of objects (Faire expirer les versions actuelles des objets)

      Note

      Pour les compartiments pour lesquels le versionnage S3 n'est pas activé, l'expiration des versions actuelles entraîne la suppression définitive des objets par Amazon S3. Pour de plus amples informations, veuillez consulter Actions du cycle de vie et état du contrôle de version du compartiment.

    • Permanently delete previous versions of objects (Supprimer définitivement les versions précédentes des objets)

    • Delete expired delete markers or incomplete multipart uploads (Supprimer les marqueurs de suppression expirés ou les chargements partitionnés non terminés)

    Selon les actions que vous choisissez, différentes options apparaissent.

  8. Pour transférer les versions actuelles des objets entre les classes de stockage, sous Transition des versions actuelles des objets entre les classes de stockage, procédez comme suit :

    1. Dans Transitions de classe de stockage, choisissez la classe de stockage vers laquelle effectuer la transition. Pour obtenir la liste des transitions possibles, voirTransitions de cycle de vie prises en charge. Vous pouvez choisir parmi les classes de stockage suivantes :

      • S3 standard – Accès peu fréquent

      • S3 Intelligent-Tiering

      • S3 One Zone-IA

      • S3 Glacier Instant Retrieval

      • S3 Glacier Flexible Retrival

      • S3 Glacier Deep Archive

    2. Dans Days after object creation (Jours après la création de l'objet), entrez le nombre de jours après la création pour la transition de l'objet.

    Pour plus d'informations sur les classes de stockage, consultez Comprendre et gérer les classes de stockage Amazon S3. Vous pouvez définir le transfert des versions actuelles ou précédentes des objets, ou des deux versions à la fois. Le contrôle de version vous permet de conserver plusieurs versions d'un objet au sein d'un même compartiment. Pour plus d’informations sur la gestion des versions, consultez Utilisation de la console S3.

    Important

    Lorsque vous choisissez la classe de stockage S3 Glacier Instant Retrieval, S3 Glacier Flexible Retrieval ou Glacier Deep Archive, vos objets restent dans Amazon S3. Vous ne pouvez pas y accéder directement via le service Amazon S3 Glacier distinct. Pour de plus amples informations, veuillez consulter Transition des objets à l'aide du cycle de vie Amazon S3.

  9. Pour transférer des versions non actuelles d'objets entre des classes de stockage, sous Transition de versions non actuelles d'objets entre classes de stockage, procédez comme suit :

    1. Dans Transitions de classe de stockage, choisissez la classe de stockage vers laquelle effectuer la transition. Pour obtenir la liste des transitions possibles, voirTransitions de cycle de vie prises en charge. Vous pouvez choisir parmi les classes de stockage suivantes :

      • S3 standard – Accès peu fréquent

      • S3 Intelligent-Tiering

      • S3 One Zone-IA

      • S3 Glacier Instant Retrieval

      • S3 Glacier Flexible Retrival

      • S3 Glacier Deep Archive

    2. Dans Jours après que l'objet ne soit plus actuel, entrez le nombre de jours après sa création pour effectuer la transition de l'objet.

  10. Pour faire expirer les versions actuelles des objets, sous Expire current versions of objects (Faire expirer des versions actuelles des objets), dans Number of days after object creation (Nombre de jours après la création de l'objet), entrez le nombre de jours.

    Important

    Dans un compartiment non versionné, l'action d'expiration entraîne la suppression définitive de l'objet par Amazon S3. Pour en savoir plus sur les actions de cycle de vie, veuillez consulter Éléments pour décrire les actions du cycle de vie.

  11. Pour supprimer définitivement les versions précédentes d'objets, sous Permanently delete noncurrent versions of objects (Supprimer définitivement les versions précédentes des objets), dans Days after objects become previous versions (Jours après que les objets deviennent des versions précédentes), entrez le nombre de jours. Vous pouvez éventuellement spécifier le nombre de versions plus récentes à conserver en saisissant une valeur sous Number of newer versions to retain (Nombre de versions plus récentes à conserver).

  12. Sous Delete expired delete markers or incomplete multipart uploads (Supprimer les marqueurs de suppression expirés ou les chargements en plusieurs parties incomplets), choisissez Delete expired object delete markers (Supprimer les marqueurs de suppression d'objet arrivés à expiration) et Delete incomplete multipart uploads (Supprimer les chargements partitionnés non terminés). Entrez ensuite le nombre de jours après le début du chargement partitionné que vous souhaitez arrêter et nettoyez les chargements en plusieurs parties incomplets.

    Pour en savoir plus sur le chargement partitionné, consultez Chargement et copie d'objets à l'aide d'un chargement partitionné.

  13. Choisissez Créer une règle.

    Si la règle ne contient aucune erreur, Amazon S3 l'active et vous pouvez la voir dans l'onglet Management (Gestion) sous Lifecycle rules (Règles de cycle de vie).

Vous pouvez utiliser les AWS CLI commandes suivantes pour gérer les configurations du cycle de vie S3 :

  • put-bucket-lifecycle-configuration

  • get-bucket-lifecycle-configuration

  • delete-bucket-lifecycle

Pour obtenir des instructions sur la configuration du AWS CLI, consultez la section Développement avec Amazon S3 AWS CLI à l'aide du document de APIréférence Amazon S3.

La configuration du cycle de vie d'Amazon S3 est un XML fichier. Mais lorsque vous utilisez le AWS CLI, vous ne pouvez pas spécifier le XML format. Vous devez plutôt spécifier le JSON format. Vous trouverez ci-dessous des exemples de configurations de XML cycle de vie et les JSON configurations équivalentes que vous pouvez spécifier dans une AWS CLI commande.

Prenez l'exemple suivant de configuration de cycle de vie S3.

Exemple 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" } ] }
Exemple 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 } } ] }

Vous pouvez tester la commande put-bucket-lifecycle-configuration comme suit.

Tester la configuration
  1. Enregistrez la configuration JSON du cycle de vie dans un fichier (par exemple, cycle de vie.json).

  2. Exécutez la AWS CLI commande suivante pour définir la configuration du cycle de vie de votre bucket. Remplacez user input placeholders par vos propres informations.

    $ aws s3api put-bucket-lifecycle-configuration  \ --bucket amzn-s3-demo-bucket  \ --lifecycle-configuration file://lifecycle.json
  3. Pour vérifier, récupérez la configuration du cycle de vie S3 à l'aide de la get-bucket-lifecycle-configuration AWS CLI commande suivante :

    $ aws s3api get-bucket-lifecycle-configuration  \ --bucket amzn-s3-demo-bucket
  4. Pour supprimer la configuration du cycle de vie S3, utilisez la delete-bucket-lifecycle AWS CLI commande suivante :

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

Vous pouvez utiliser le AWS SDK for Java pour gérer la configuration du cycle de vie S3 d'un compartiment. Pour plus d’informations sur la gestion de la configuration du cycle de vie S3, consultez Gestion du cycle de vie des objets.

Note

Lorsque vous ajoutez une configuration de cycle de vie S3 à un compartiment, Amazon S3 remplace la configuration de cycle de vie actuelle du compartiment, le cas échéant. Pour mettre à jour une configuration, vous devez la récupérer, effectuer les modifications souhaitées, puis ajouter la configuration révisée dans le compartiment.

L'exemple suivant montre comment utiliser le pour ajouter, mettre AWS SDK for Java à jour et supprimer la configuration du cycle de vie d'un bucket. Cet exemple effectue les opérations suivantes :

  • Il ajoute une configuration de cycle de vie à un compartiment.

  • Il récupère la configuration de cycle de vie et la met à jour en ajoutant une autre règle.

  • Il ajoute la configuration de cycle de vie modifiée au compartiment. Amazon S3 remplace la configuration existante.

  • Récupère à nouveau la configuration et vérifie qu'elle contient le bon nombre de règles en imprimant le nombre de règles.

  • Il supprime la configuration de cycle de vie et vérifie que celle-ci a été supprimée en tentant de la récupérer à nouveau.

Pour obtenir des instructions sur la création et le test d'un échantillon de travail, voir Getting Started dans le guide du AWS SDK for Java développeur.

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

Vous pouvez utiliser le AWS SDK for .NET pour gérer la configuration du cycle de vie S3 sur un bucket. Pour plus d’informations sur la gestion de la configuration du cycle de vie, consultez Gestion du cycle de vie des objets.

Note

Quand vous ajoutez une configuration de cycle de vie, Amazon S3 remplace la configuration existante sur le compartiment spécifié. Pour mettre à jour une configuration, vous devez d'abord récupérer la configuration de cycle de vie, effectuer les modifications, puis ajouter la configuration modifiée dans le compartiment.

L'exemple suivant montre comment utiliser le pour ajouter, mettre AWS SDK for .NET à jour et supprimer la configuration du cycle de vie d'un bucket. L'exemple de code effectue les opérations suivantes :

  • Il ajoute une configuration de cycle de vie à un compartiment.

  • Il récupère la configuration de cycle de vie et la met à jour en ajoutant une autre règle.

  • Il ajoute la configuration de cycle de vie modifiée au compartiment. Amazon S3 remplace la configuration de cycle de vie existante.

  • Il récupère à nouveau la configuration de cycle de vie et la vérifie en affichant le nombre de règles qu'elle contient.

  • Il supprime la configuration de cycle de vie et vérifie qu'elle a été supprimée.

Pour plus d'informations sur la configuration et l'exécution des exemples de code, consultez Getting Started with the AWS SDK for .NET dans le manuel du AWS SDK for .NET développeur.

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

Vous pouvez utiliser le AWS SDK for Ruby pour gérer une configuration du cycle de vie S3 sur un compartiment en utilisant la classe AWS::S3::BucketLifecycleConfiguration. Pour plus d'informations sur la gestion de la configuration du cycle de vie S3, consultezGestion du cycle de vie des objets.

Les rubriques suivantes du manuel Amazon Simple Storage Service API Reference décrivent les REST API opérations liées à la configuration du cycle de vie S3 :

Résolution des problèmes liés au cycle de vie S3

Pour les problèmes courants susceptibles de survenir lors de l'utilisation de S3 Lifecycle, consultezRésolution des problèmes liés au cycle de vie d'Amazon S3.