Résolution des problèmes de 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.

Résolution des problèmes de gestion des versions

Les rubriques suivantes peuvent vous aider à résoudre des problèmes courants de gestion des versions sur Amazon S3.

Je souhaite récupérer des objets qui ont été supprimés accidentellement dans un compartiment avec la gestion des versions.

En général, lorsque des versions d’objets sont supprimées des compartiments S3, Amazon S3 n’a aucun moyen de les récupérer. Toutefois, si vous avez activé la gestion des versions S3 sur votre compartiment S3, une demande DELETE qui ne spécifie pas d’ID de version ne peut pas supprimer définitivement un objet. Au lieu de cela, un marqueur de suppression est ajouté en tant qu’espace réservé. Ce marqueur de suppression devient la version actuelle de l’objet.

Pour vérifier si vos objets supprimés sont définitivement ou temporairement supprimés (avec un marqueur de suppression à leur place), procédez comme suit :

  1. Connectez-vous à la console Amazon S3 AWS Management Console et ouvrez-la à l'adresse https://console.aws.amazon.com/s3/.

  2. Dans le panneau de navigation de gauche, choisissez Compartiments.

  3. Dans la liste Compartiments, choisissez le nom du compartiment qui contient l’objet.

  4. Dans la liste Objets, activez le bouton Afficher les versions à droite de la barre de recherche, puis recherchez l’objet supprimé dans la barre de recherche. Cette option n’est disponible que si la gestion des versions a précédemment été activée sur le compartiment.

    Vous pouvez également utiliser S3 Inventory pour rechercher des objets supprimés.

  5. Si vous ne trouvez pas l’objet après avoir activé l’option Afficher les versions ou créé un rapport d’inventaire, et que vous ne trouvez pas non plus de marqueur de suppression de l’objet, la suppression est définitive et l’objet ne peut pas être récupéré.

Vous pouvez également vérifier le statut d'un objet supprimé à l'aide de l'opération HeadObject API depuis le AWS Command Line Interface (AWS CLI). Pour ce faire, utilisez la commande head-object suivante et remplacez user input placeholders par vos propres informations :

aws s3api head-object --bucket amzn-s3-demo-bucket --key index.html

Si vous exécutez la commande head-object sur un objet avec la gestion des versions dont la version actuelle est un marqueur de suppression, vous recevrez une erreur 404 Introuvable. Par exemple :

Une erreur s'est produite (404) lors de l'appel de l' HeadObject opération : Introuvable

Si vous exécutez la commande head-object sur un objet avec la gestion des versions et que vous fournissez l’ID de version de l’objet, Amazon S3 récupère les métadonnées de l’objet, confirmant ainsi que l’objet existe toujours et qu’il n’est pas supprimé définitivement.

aws s3api head-object --bucket amzn-s3-demo-bucket --key index.html --version-id versionID

{
"AcceptRanges": "bytes",
"ContentType": "text/html",
"LastModified": "Thu, 16 Apr 2015 18:19:14 GMT",
"ContentLength": 77,
"VersionId": "Zg5HyL7m.eZU9iM7AVlJkrqAiE.0UG4q",
"ETag": "\"30a6ec7e1a9ad79c203d05a589c8b400\"",
"Metadata": {}
}

Si l’objet est trouvé et que la version la plus récente est un marqueur de suppression, la version précédente de l’objet existe toujours. Le marqueur de suppression étant la version actuelle de l’objet, vous pouvez récupérer l’objet en supprimant le marqueur de suppression.

Une fois que vous avez supprimé définitivement le marqueur de suppression, la deuxième version la plus récente de l’objet devient la version actuelle de l’objet, ce qui rend votre objet à nouveau disponible. Pour une représentation visuelle de la façon dont les objets sont récupérés, consultez Suppression des marqueurs de suppression.

Pour supprimer une version spécifique d’un objet, vous devez être le propriétaire du compartiment. Pour supprimer un marqueur de suppression définitivement, vous devez inclure son ID de version dans une demande DeleteObject. Pour supprimer le marqueur de suppression, utilisez la commande suivante et remplacez user input placeholders par vos propres informations :

aws s3api delete-object --bucket amzn-s3-demo-bucket --key index.html --version-id versionID

Pour plus d'informations sur la delete-object commande, voir delete-objectdans la référence de AWS CLI commande. Pour plus d’informations sur la suppression permanente de marqueurs de suppression, consultez Gestion des marqueurs de suppression.

Je souhaite supprimer définitivement les objets avec la gestion des versions

Dans un compartiment avec la gestion des versions, une demande DELETE sans ID de version ne peut pas supprimer de façon permanente un objet. Au lieu de cela, une telle demande insère un marqueur de suppression.

Pour supprimer définitivement des objets avec la gestion des versions, vous pouvez choisir l’une des méthodes suivantes :

  • Créez une règle de cycle de vie S3 pour supprimer définitivement les anciennes versions. Pour supprimer définitivement les versions anciennes d’objets, sous Supprimer définitivement les anciennes versions des objets, dans Jours après lesquels les objets deviennent anciens, saisissez 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). Pour plus d’informations sur la création de cette règle, consultez Setting an S3 Lifecycle configuration (Définition d’une configuration du cycle de vie S3).

  • Supprimez une version spécifiée en incluant l’ID de version dans la demande DELETE. Pour plus d’informations, consultez How to delete versioned objects permanently (Comment supprimer des objets avec la gestion des versions de façon permanente).

  • Créez une règle de cycle de vie pour faire expirer les versions actuelles. Pour faire expirer les versions actuelles des objets, sous Expirer les versions actuelles d’objets, dans Jours après la création de l’objet, saisissez le nombre de jours. Pour plus d’informations sur la création de cette règle de cycle de vie, consultez Setting an S3 Lifecycle configuration (Définition d’une configuration du cycle de vie S3).

  • Pour supprimer définitivement tous les objets avec la gestion des versions et supprimer les marqueurs, créez deux règles de cycle de vie : l’une pour faire expirer les versions actuelles et supprimer définitivement les versions anciennes des objets, et l’autre pour supprimer les marqueurs de suppression d’objets expirés.

Dans un compartiment avec la gestion des versions, une demande DELETE qui ne spécifie pas d’ID de version ne peut supprimer que les objets dotés d’un identifiant de version NULL. Si l’objet a été chargé lorsque la gestion des versions était activée, une demande DELETE qui ne spécifie pas d’ID de version crée un marqueur de suppression de cet objet.

Note

Pour les compartiments avec le verrouillage des objets S3, une demande d’objet DELETE avec un ID de version d’objet protégé provoque une erreur 403 Accès refusé. Une demande d’objet DELETE sans ID de version ajoute un marqueur de suppression en tant que version la plus récente de l’objet avec une réponse 200 OK. Les objets protégés par le verrouillage des objets ne peuvent pas être supprimés définitivement tant que leurs périodes de rétention et leurs conservations légales ne sont pas levées. Pour plus d’informations, consultez Fonctionnement du verrouillage d’objets S3.

Je constate une dégradation des performances après avoir activé la gestion des versions sur les compartiments

Une dégradation des performances peut se produire sur les compartiments avec la gestion des versions s’il y a trop de marqueurs de suppression ou d’objets avec la gestion des versions et si les meilleures pratiques ne sont pas suivies.

Marqueurs de suppression trop nombreux

Après avoir activé la gestion des versions sur un compartiment, une demande DELETE faite à un objet sans ID de version crée un marqueur de suppression avec un ID de version unique. Les configurations de cycle de vie avec une règle Expirer les versions actuelles d’objets ajoutent un marqueur de suppression avec un ID de version unique à chaque objet. Un nombre excessif de marqueurs de suppression peut réduire les performances du compartiment.

Lorsque la gestion des versions est suspendue sur un compartiment, Amazon S3 marque l’ID de version comme NULL sur les nouveaux objets créés. Dans un compartiment avec la gestion des versions suspendue, l’action d’expiration entraîne la création par Amazon S3 d’un marqueur de suppression avec l’ID de version NULL. Dans un compartiment avec la gestion des versions suspendue, un marqueur de suppression NULL est créé pour chaque demande de suppression. Ces marqueurs de suppression NULL sont également appelés marqueurs de suppression d’objet expiré lorsque toutes les versions d’objet sont supprimées et qu’il ne reste qu’un seul marqueur de suppression. Si trop de marqueurs de suppression NULL s’accumulent, les performances du compartiment se dégradent.

Objets avec la gestion des versions trop nombreux

Si un compartiment avec la gestion des versions contient des objets contenant des millions de versions, le nombre d’erreurs 503 Service indisponible peut augmenter. Si vous remarquez une augmentation importante du nombre de réponses HTTP 503 Service indisponible reçues pour des demandes d’objet PUT ou DELETE vers un compartiment avec la gestion des versions, il est possible qu’un ou plusieurs objets du compartiment aient des millions de versions. Lorsque vous avez des objets avec des millions de versions, Amazon S3 limite automatiquement les demandes vers le compartiment. La limitation des demandes protège votre compartiment d’une quantité excessive de trafic de demandes qui pourrait potentiellement gêner d’autres demandes effectuées auprès du même compartiment.

Pour déterminer quels objets ont des millions de versions, utilisez S3 Inventory. S3 Inventory génère un rapport qui fournit une liste de fichiers plats des objets d’un compartiment. Pour plus d’informations, consultez Catalogage et analyse de vos données avec l’inventaire S3.

Pour vérifier si le compartiment contient un nombre élevé d’objets avec la gestion des versions, utilisez les métriques de S3 Storage Lens pour afficher Nombre d’objets de version actuelle Nombre d’objets de version ancienne et Nombre d’objets marqueur de suppression. Pour plus d’informations sur les métriques de Storage Lens, consultez Glossaire des métriques Amazon S3 Storage Lens.

L’équipe Amazon S3 encourage les clients à examiner les applications qui remplacent souvent le même objet et créent potentiellement des millions de versions de cet objet, afin de déterminer si l’application fonctionne comme prévu. Par exemple, une application qui remplace le même objet toutes les minutes pendant une semaine peut créer plus de dix mille versions. Nous recommandons de stocker moins de cent mille versions pour chaque objet. Si votre cas d'utilisation nécessite des millions de versions pour un ou plusieurs objets, contactez l' AWS Support équipe pour obtenir de l'aide afin de déterminer la meilleure solution.

Bonnes pratiques

Pour éviter les problèmes de dégradation des performances liés à la gestion des versions, nous vous recommandons de suivre les bonnes pratiques suivantes :

  • Activez une règle de cycle de vie pour faire expirer les anciennes versions des objets. Par exemple, vous pouvez créer une règle de cycle de vie pour faire expirer les versions anciennes 30 jours après la fin de la période d’inactivité de l’objet. Vous pouvez également conserver plusieurs anciennes versions si vous ne souhaitez pas toutes les supprimer. Pour plus d’informations, consultez Setting an S3 Lifecycle configuration (Définition d’une configuration du cycle de vie S3).

  • Activez une règle de cycle de vie pour supprimer les marqueurs de suppression d’objets expirés auxquels aucun objet de données n’est associé dans le compartiment. Pour plus d’informations, consultez Suppression des marqueurs de suppression d’objet expiré.

Pour en savoir plus sur les bonnes pratiques d’optimisation des performances d’Amazon S3, consultez Schémas de conception des bonnes pratiques.