Liste d'objets dans un compartiment activé pour la gestion des versions - 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.

Liste d'objets dans un compartiment activé pour la gestion des versions

Cette section fournit des exemples de listes de versions d'objet à partir d'un compartiment activé pour la gestion des versions. Amazon S3 stocke les informations relatives aux versions d'objet dans la sous-ressource versions associée au compartiment. Pour plus d’informations, consultez Options de configuration des compartiments. Pour répertorier les objets d'un compartiment dont la gestion des versions est activée, vous avez besoin de l'autorisation ListBucketVersions.

Procédez comme suit pour utiliser la console Amazon S3 pour afficher les différentes versions d'un objet.

Pour afficher différentes versions d'un objet
  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 qui contient l'objet.

  3. Pour afficher la liste des versions des objets du compartiment, choisissez le commutateur Show versions (Afficher les versions).

    Pour chaque version d'objet, la console affiche un ID de version unique, la date et l'heure auxquelles la version d'objet a été créée, et d'autres propriétés. (Les objets stockés dans le compartiment avant la configuration de l'état de la gestion des versions possèdent un ID de version null.)

    Pour répertorier les objets sans les versions, choisissez le commutateur List versions (Répertorier les versions).

Vous pouvez également afficher, télécharger et supprimer les versions d'un objet dans le panneau de présentation de l'objet sur la console. Pour de plus amples informations, veuillez consulter Affichage d'une présentation d'un objet dans la console Amazon S3.

Note

Pour accéder aux versions d'objets antérieures à 300 versions, vous devez utiliser la AWS CLI ou l'URL de l'objet.

Important

Vous pouvez annuler la suppression d'un objet uniquement si celui-ci a été supprimé en tant que version la plus récente (version actuelle). Vous ne pouvez pas restaurer une version précédente d'un objet supprimé. Pour de plus amples informations, veuillez consulter Utilisation de la gestion des versions dans les compartiments S3.

Les exemples de cette section montrent comment récupérer une liste d'objets à partir d'un compartiment activé pour la gestion des versions. Chaque demande renvoie jusqu'à 1 000 versions, sauf si vous spécifiez un nombre inférieur. Si le compartiment contient plus de versions que cette limite, vous devez envoyer une série de demandes pour récupérer la liste de toutes les versions. Ce processus de renvoi des résultats dans des « pages » s'appelle pagination.

Pour illustrer le fonctionnement de la pagination, les exemples limitent chaque réponse à deux versions d'objet. Après avoir récupéré la première page de résultats, chaque exemple vérifie si la liste de versions a été tronquée. Si tel est le cas, l'exemple continue de récupérer les pages jusqu'à ce que toutes les versions aient été récupérées.

Note

Les exemples suivants fonctionnent également avec un compartiment qui n'est pas activé pour la gestion des versions ou pour des objets qui n'ont pas de versions individuelles. Dans ces cas de figure, Amazon S3 renvoie la liste d'objets avec l'ID de version null.

Pour plus d'informations sur l'utilisation d'autres AWS SDK, consultez le AWS Developer Center.

Java

Pour obtenir les instructions sur la création et le test d'un exemple pratique, consultez Test des exemples de code Java Amazon S3.

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.ListVersionsRequest; import com.amazonaws.services.s3.model.S3VersionSummary; import com.amazonaws.services.s3.model.VersionListing; public class ListKeysVersioningEnabledBucket { public static void main(String[] args) { Regions clientRegion = Regions.DEFAULT_REGION; String bucketName = "*** Bucket name ***"; try { AmazonS3 s3Client = AmazonS3ClientBuilder.standard() .withCredentials(new ProfileCredentialsProvider()) .withRegion(clientRegion) .build(); // Retrieve the list of versions. If the bucket contains more versions // than the specified maximum number of results, Amazon S3 returns // one page of results per request. ListVersionsRequest request = new ListVersionsRequest() .withBucketName(bucketName) .withMaxResults(2); VersionListing versionListing = s3Client.listVersions(request); int numVersions = 0, numPages = 0; while (true) { numPages++; for (S3VersionSummary objectSummary : versionListing.getVersionSummaries()) { System.out.printf("Retrieved object %s, version %s\n", objectSummary.getKey(), objectSummary.getVersionId()); numVersions++; } // Check whether there are more pages of versions to retrieve. If // there are, retrieve them. Otherwise, exit the loop. if (versionListing.isTruncated()) { versionListing = s3Client.listNextBatchOfVersions(versionListing); } else { break; } } System.out.println(numVersions + " object versions retrieved in " + numPages + " pages"); } 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

Pour obtenir des informations sur la façon de créer et de tester un exemple pratique, consultez Exécution des exemples de code .NET Amazon S3.

using Amazon; using Amazon.S3; using Amazon.S3.Model; using System; using System.Threading.Tasks; namespace Amazon.DocSamples.S3 { class ListObjectsVersioningEnabledBucketTest { static string bucketName = "*** bucket name ***"; // Specify your bucket region (an example region is shown). private static readonly RegionEndpoint bucketRegion = RegionEndpoint.USWest2; private static IAmazonS3 s3Client; public static void Main(string[] args) { s3Client = new AmazonS3Client(bucketRegion); GetObjectListWithAllVersionsAsync().Wait(); } static async Task GetObjectListWithAllVersionsAsync() { try { ListVersionsRequest request = new ListVersionsRequest() { BucketName = bucketName, // You can optionally specify key name prefix in the request // if you want list of object versions of a specific object. // For this example we limit response to return list of 2 versions. MaxKeys = 2 }; do { ListVersionsResponse response = await s3Client.ListVersionsAsync(request); // Process response. foreach (S3ObjectVersion entry in response.Versions) { Console.WriteLine("key = {0} size = {1}", entry.Key, entry.Size); } // If response is truncated, set the marker to get the next // set of keys. if (response.IsTruncated) { request.KeyMarker = response.NextKeyMarker; request.VersionIdMarker = response.NextVersionIdMarker; } else { request = null; } } while (request != null); } catch (AmazonS3Exception e) { Console.WriteLine("Error encountered on server. 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); } } } }
Exemple — Liste de toutes les versions d'objet dans un compartiment

Pour répertorier toutes les versions de tous les objets d'un compartiment, vous utilisez la sous-ressource versions dans une demande GET Bucket. Amazon S3 peut récupérer 1 000 objets maximum, et chaque version d'objet compte pleinement comme un objet. Par conséquent, si un compartiment contient deux clés (par exemple, photo.gif et picture.jpg), et que la première clé comporte 990 versions et la seconde 400 versions, une seule demande peut récupérer les 990 versions de photo.gif et uniquement les 10 versions les plus récentes de picture.jpg.

Amazon S3 renvoie des versions d'objet dans l'ordre dans lequel elles sont stockées ; les plus récemment stockées sont renvoyées en premier.

Dans une demande GET Bucket, incluez la sous-ressource versions.

GET /?versions HTTP/1.1 Host: bucketName.s3.amazonaws.com Date: Wed, 28 Oct 2009 22:32:00 +0000 Authorization: AWS AKIAIOSFODNN7EXAMPLE:0RQf4/cRonhpaBX5sCYVf1bNRuU=
Exemple — Récupération de toutes les versions d'une clé

Pour récupérer un sous-ensemble de versions d'objet, vous utilisez les paramètres de requête pour GET Bucket. Pour plus d’informations, consultez GET Bucket.

  1. Configurez le paramètre prefix sur la clé de l'objet que vous souhaitez récupérer.

  2. Envoyez une demande GET Bucket grâce à la sous-ressource versions et prefix.

    GET /?versions&prefix=objectName HTTP/1.1

Exemple — Récupération d'objets à l'aide d'un préfixe

L'exemple suivant récupère des objets dont la clé est ou commence par myObject.

GET /?versions&prefix=myObject HTTP/1.1 Host: bucket.s3.amazonaws.com Date: Wed, 28 Oct 2009 22:32:00 GMT Authorization: AWS AKIAIOSFODNN7EXAMPLE:0RQf4/cRonhpaBX5sCYVf1bNRuU=

Vous pouvez utiliser les autres paramètres de la demande pour récupérer un sous-ensemble de toutes les versions de l'objet. Pour plus d'informations, veuillez consulter GET Bucket dans la Référence d'API Amazon Simple Storage Service.

Exemple — Récupération d'une liste d'objets supplémentaires si la réponse est tronquée

Si le nombre d'objets qui peuvent être renvoyés dans une demande GET dépasse la valeur de max-keys, la réponse contient <isTruncated>true</isTruncated>, et inclut la première clé (dans NextKeyMarker) et le premier ID de version (dans NextVersionIdMarker) qui satisfont la demande, mais qui n'ont pas été renvoyés. Vous utilisez ces valeurs renvoyées comme la position de départ dans une demande suivante pour récupérer les objets supplémentaires qui satisfont la demande GET.

Utilisez le processus suivant pour récupérer des objets supplémentaires qui satisfont la demande GET Bucket versions originale à partir d'un compartiment. Pour plus d'informations sur key-marker, version-id-marker, NextKeyMarker et NextVersionIdMarker, consultez GET Bucket dans la référence de l’API Amazon Simple Storage Service.

Ces quelques réponses supplémentaires satisfont à la requête GET d'origine :

  • Configurez la valeur de key-marker sur la clé renvoyée dans NextKeyMarker dans la réponse précédente.

  • Configurez la valeur de version-id-marker sur l'ID de version renvoyé dans NextVersionIdMarker dans la réponse précédente.

  • Envoyez une demande GET Bucket versions avec key-marker et version-id-marker.

Exemple — Récupération des objets commençant par une clé et un ID de version spécifiés
GET /?versions&key-marker=myObject&version-id-marker=298459348571 HTTP/1.1 Host: bucket.s3.amazonaws.com Date: Wed, 28 Oct 2009 22:32:00 GMT Authorization: AWS AKIAIOSFODNN7EXAMPLE:0RQf4/cRonhpaBX5sCYVf1bNRuU=

La commande suivante renvoie des métadonnées relatives à toutes les versions des objets contenus dans un compartiment.

aws s3api list-object-versions --bucket DOC-EXAMPLE-BUCKET1

Pour plus d'informations sur list-object-versions, consultez list-object-versions dans la référence des commandes AWS CLI .