Utiliser des objets soumis à suppression réversible

Présentation Configuration

Cette page explique comment lister des objets qui ont subi une opération de suppression réversible, mais aussi comment y accéder et comment les restaurer.

Avant de commencer

Pour effectuer les tâches décrites sur cette page, assurez-vous de disposer du rôle IAM "Administrateur de l'espace de stockage" (roles/storage.admin) sur le bucket ou sur le projet contenant le bucket. Ce rôle prédéfini inclut les autorisations requises pour gérer et restaurer la suppression réversible sur un bucket.

Pour afficher les autorisations exactes requises, développez la section Autorisations requises :

Autorisations requises

  • storage.buckets.get
  • storage.buckets.update
  • storage.buckets.list
    • Cette autorisation est requise si vous prévoyez d'utiliser la console Google Cloud pour exécuter les instructions de cette page.
  • storage.objects.restore
  • storage.objects.create
  • storage.objects.delete
    • Cette autorisation est requise si la restauration d'un objet entraîne le remplacement d'un objet existant.
  • storage.buckets.restore
    • Cette autorisation est requise si vous souhaitez restaurer de façon groupée les objets soumis à suppression réversible dans un bucket.
  • storage.bucketOperations.*
    • Cette autorisation est requise pour les opérations de longue durée.

Pour en savoir plus sur l'attribution de rôles dans des buckets, consultez la page Utiliser IAM avec des buckets. Pour savoir comment attribuer des rôles aux projets, consultez la page Gérer l'accès aux projets.

Lister tous les objets soumis à suppression réversible dans un bucket

Vous pouvez lister tous les objets d'un bucket ayant été soumis à une opération de suppression réversible.

Console

  1. Dans la console Google Cloud, accédez à la page Buckets Cloud Storage.

    Accéder à la page "Buckets"

  2. Dans la liste des buckets, cliquez sur le nom du bucket pour lequel vous souhaitez afficher les objets soumis à suppression réversible. La page Informations sur le bucket s'ouvre avec l'onglet Objets sélectionné.

  3. Dans la liste Afficher, sélectionnez Objets supprimés de façon réversible uniquement. Une liste des objets soumis à suppression réversible s'affiche.

Ligne de commande

Pour afficher la liste de tous les objets soumis à suppression réversible dans un bucket, exécutez la commande gcloud storage ls avec les options --soft-deleted et --recursive :

  gcloud storage ls gs://BUCKET_NAME --soft-deleted --recursive

Remplacez les éléments suivants :

  • BUCKET_NAME : nom du bucket. Exemple : my-bucket.

API REST

API JSON

  1. Vous devez installer et initialiser gcloud CLI afin de générer un jeton d'accès pour l'en-tête Authorization.

    Vous pouvez également créer un jeton d'accès à l'aide d'OAuth 2.0 Playground et l'inclure dans l'en-tête Authorization.

  2. Utilisez cURL pour appeler l'API JSON avec une requête permettant de répertorier les objets à l'aide du paramètre de requête ?softDeleted :

    curl -X GET \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/o?softDeleted=true"

    BUCKET_NAME est le nom du bucket concerné. Exemple :my-bucket

Afficher toutes les versions supprimées de façon réversible d'un objet

Vous pouvez afficher toutes les versions supprimées de façon réversible d'un objet spécifique de votre bucket.

Console

  1. Dans la console Google Cloud, accédez à la page Buckets Cloud Storage.

    Accéder à la page "Buckets"

  2. Dans la liste des buckets, cliquez sur le nom du bucket contenant l'objet dont vous souhaitez afficher les versions supprimées de façon réversible. La page Informations sur le bucket s'ouvre avec l'onglet Objets sélectionné.

  3. Cliquez sur l'objet pour lequel vous souhaitez afficher toutes les versions supprimées de façon réversible. La page Détails de l'objet s'affiche.

  4. Cliquez sur l'onglet Historique des versions.

  5. Dans la liste Afficher, sélectionnez Objets supprimés de façon réversible uniquement. La liste de toutes les versions supprimées de façon réversible pour cet objet s'affiche.

Ligne de commande

Pour afficher la liste de toutes les versions supprimées de façon réversible d'un objet au sein d'un bucket, utilisez la commande gcloud storage ls :

  gcloud storage ls gs://BUCKET_NAME/OBJECT_NAME --soft-deleted

Remplacez les éléments suivants :

  • BUCKET_NAME : nom du bucket. Exemple : my-bucket.
  • OBJECT_NAME : nom de l'objet dont vous souhaitez afficher toutes les versions.

API REST

API JSON

  1. Vous devez installer et initialiser gcloud CLI afin de générer un jeton d'accès pour l'en-tête Authorization.

    Vous pouvez également créer un jeton d'accès à l'aide d'OAuth 2.0 Playground et l'inclure dans l'en-tête Authorization.

  2. Utilisez cURL pour appeler l'API JSON avec une requête permettant de répertorier les objets à l'aide du paramètre de requête ?softDeleted :

    curl -X GET \
      -H "Authorization: Bearer OAUTH2_TOKEN" \
      -H "Content-Type: application/json" \
      "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/o?softDeleted=true"

    BUCKET_NAME est le nom du bucket concerné. Exemple :my-bucket

Restaurer un objet soumis à suppression réversible

Vous pouvez restaurer une version spécifique d'un objet soumis à suppression réversible dans votre bucket.

Console

  1. Dans la console Google Cloud, accédez à la page Buckets Cloud Storage.

    Accéder à la page "Buckets"

  2. Dans la liste des buckets, cliquez sur le nom du bucket qui contient les objets soumis à suppression réversible que vous souhaitez restaurer. La page Informations sur le bucket s'ouvre avec l'onglet Objets sélectionné.

  3. Dans la liste Afficher, sélectionnez Objets supprimés de façon réversible uniquement.

  4. Accédez à l'objet, qui peut se trouver dans un dossier.

  5. Cliquez sur l'objet soumis à suppression réversible. La page Détails de l'objet s'affiche.

  6. Dans la liste Afficher, sélectionnez Objets supprimés de façon réversible uniquement. Une liste de toutes les versions supprimées de façon réversible de cet objet s'affiche.

  7. Pour restaurer une version supprimée de façon réversible d'un objet, cliquez sur Restaurer en regard de la version souhaitée. Le volet de restauration de version d'objet s'ouvre.

  8. Cliquez sur Confirmer.

Ligne de commande

Pour restaurer une version supprimée de façon réversible d'un objet, utilisez la commande gcloud storage restore :

  gcloud storage restore gs://BUCKET_NAME/OBJECT_NAME#GENERATION_NUMBER

Remplacez les éléments suivants :

  • BUCKET_NAME : nom du bucket. Exemple : my-bucket.
  • OBJECT_NAME : nom de l'objet pour lequel vous souhaitez afficher toutes les versions.
  • GENERATION_NUMBER : numéro de génération de l'objet soumis à suppression réversible que vous souhaitez restaurer. Si vous ne spécifiez pas le numéro de génération, la dernière version est restaurée. Exemple :1560468815691234

Pour découvrir d'autres options permettant de restaurer plusieurs objets de manière groupée, y compris la restauration de toutes les versions d'un objet avec l'option all-versions, consultez la documentation de référence de gcloud storage restore.

API REST

API JSON

  1. Vous devez installer et initialiser gcloud CLI afin de générer un jeton d'accès pour l'en-tête Authorization.

    Vous pouvez également créer un jeton d'accès à l'aide d'OAuth 2.0 Playground et l'inclure dans l'en-tête Authorization.

  2. Exécutez la commande cURL pour appeler l'API JSON avec une requête POST Object :

    curl -X POST \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/o/OBJECT_NAME/restore?generation=GENERATION_NUMBER"

    Où :

    • BUCKET_NAME correspond au nom du bucket concerné. Exemple :my-bucket
    • OBJECT_NAME correspond au nom de l'objet soumis à suppression réversible que vous souhaitez restaurer. Par exemple, cat.jpeg.
    • GENERATION_NUMBER correspond au numéro de génération de l'objet soumis à suppression réversible que vous souhaitez restaurer. Si vous ne spécifiez pas le numéro de génération, la dernière version est restaurée. Exemple : 1560468815691234.

Effectuer une restauration groupée d'objets soumis à suppression réversible dans un bucket

Si vous souhaitez restaurer un grand nombre d'objets ou si vous ne connaissez pas les objets spécifiques que vous souhaitez restaurer, utilisez l'opération de restauration groupée. Notez que les opérations de restauration groupée s'effectuent de manière asynchrone et peuvent, dans certains cas, prendre une heure ou plus.

Une opération de restauration groupée lance une opération de longue durée sur un bucket. Vous pouvez utiliser la Google Cloud CLI pour obtenir et lister les opérations de longue durée, afin d'afficher les détails et l'état de l'opération de restauration groupée lorsqu'elle est en cours.

Console

  1. Dans la console Google Cloud, accédez à la page Buckets Cloud Storage.

    Accéder à la page "Buckets"

  2. Dans la liste des buckets, recherchez celui qui contient les objets à restaurer.

  3. Cliquez sur le menu déroulant de bucket () associé au bucket, puis sélectionnez Créer un job de restauration.

    Le volet Créer job de restauration s'ouvre.

  4. Dans la section Choisir les objets supprimés de façon réversible à restaurer, sélectionnez la période de suppression à partir de laquelle vous souhaitez restaurer les objets.

  5. (Facultatif) Sélectionnez Filter by glob pattern (Filtrer par modèle glob) et saisissez un modèle glob pour ne restaurer que les objets répondant aux critères de modèle glob.

  6. (Facultatif) Activez d'autres comportements de restauration dans la section Options de restauration.

  7. Cliquez sur Créer.

Vous pouvez suivre la progression de votre opération de restauration groupée en cliquant sur le bouton Notifications () situé dans l'en-tête de la console Google Cloud.

Ligne de commande

Pour utiliser l'opération de restauration groupée afin de restaurer tous les objets d'un bucket, utilisez la commande gcloud storage restore.

La commande suivante effectue une opération de restauration groupée afin de restaurer de manière asynchrone tous les objets du bucket qui ont été supprimés au cours d'une période donnée :

  gcloud storage restore gs://BUCKET_NAME/** \
      --async --deleted-after-time=DELETED_AFTER_TIME \
      --deleted-before-time=DELETED_BEFORE_TIME

Remplacez les éléments suivants :

  • BUCKET_NAME : nom du bucket. Exemple : my-bucket.
  • DELETED_AFTER_TIME : argument facultatif permettant de spécifier la restauration des objets supprimés après une certaine date. Exemple : 2022-12-01.
  • DELETED_BEFORE_TIME : argument facultatif permettant de spécifier la restauration des objets supprimés avant une certaine date. Exemple : 2022-12-21.

    Si l'opération réussit, la commande renvoie l'ID de l'opération de longue durée associée à l'opération de restauration groupée. Vous pouvez obtenir des détails sur l'opération de longue durée ou bien l'annuler, afin d'interrompre l'opération de restauration groupée avant qu'elle n'arrive à son terme.

API REST

API JSON

  1. Vous devez installer et initialiser gcloud CLI afin de générer un jeton d'accès pour l'en-tête Authorization.

    Vous pouvez également créer un jeton d'accès à l'aide d'OAuth 2.0 Playground et l'inclure dans l'en-tête Authorization.

  2. Exécutez la commande cURL pour appeler l'API JSON avec une requête POST Object :

    curl -X POST \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/o/bulkRestore"

    BUCKET_NAME est le nom du bucket concerné. Exemple :my-bucket

Si l'opération réussit, la commande renvoie l'ID de l'opération de longue durée associée à l'opération de restauration groupée. Vous pouvez obtenir des détails sur l'opération de longue durée ou bien l'annuler, afin d'interrompre l'opération de restauration groupée avant qu'elle n'arrive à son terme.

Gérer les opérations de longue durée pour la restauration groupée

Les opérations de longue durée dans la Google Cloud CLI sont identifiées par un nom d'opération, qui est une combinaison du nom du bucket et de l'ID d'opération.

L'exemple suivant montre une opération de longue durée renvoyée par une opération de restauration groupée :

done: false
{
  "kind": "storage@operation",
  "name": "projects/_/buckets/my-bucket/operations/CiQyODRlMTY0My0wNGExLTQ3MWItOTE2Zi1hZmQ0ZmM4ZDc4MjQQAg",
  "metadata": {
    "@type": "type.googleapis.com/google.storage.v2.BulkRestoreObjectsMetadata",
    "commonMetadata": {
      "type": "bulk-restore-objects",
      "createTime": "2023-10-20T21:08:11.289Z",
      "updateTime": "2023-10-20T21:18:37.583Z",
      "endTime": "2023-10-20T21:18:37.583Z",
      "requestedCancellation": false,
      "progressPercent": -1,
    },
    "allow_overwrite": false,
    "matchGlobs": ["*"],
    "succeededCount": "0",
    "failedCount": "0",
    "skippedCount": "0",
  },
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.storage.v2.BulkRestoreObjectsResponse"
  }
}

Pour obtenir des informations générales sur la gestion des opérations de longue durée, consultez la documentation sur gcloud storage operations.

Obtenir les détails d'une opération de longue durée

Exécutez la commande gcloud storage operations describe :

gcloud storage operations describe projects/_/buckets/BUCKET_NAME/operations/OPERATION_ID

Remplacez les éléments suivants :

  • BUCKET_NAME : nom du bucket contenant l'opération de longue durée. Exemple :my-bucket

  • OPERATION_ID : ID de l'opération de longue durée renvoyé dans la réponse de l'opération de restauration groupée.

Lister les opérations de longue durée dans un bucket

Exécutez la commande gcloud storage operations list :

gcloud storage operations list gs://BUCKET_NAME

Remplacez les éléments suivants :

  • BUCKET_NAME : nom du bucket contenant les opérations de longue durée. Exemple :my-bucket

Annuler une opération de longue durée

Exécutez la commande gcloud storage operations cancel :

gcloud storage operations cancel projects/_/buckets/BUCKET_NAME/operations/OPERATION_ID

Remplacez les éléments suivants :

  • BUCKET_NAME : nom du bucket contenant l'opération de longue durée. Exemple :my-bucket

  • OPERATION_ID : ID de l'opération de longue durée renvoyé dans la réponse de l'opération de restauration groupée.

Gestion des exceptions

Les opérations de longue durée sont renvoyées par des API asynchrones, qui supposent des pratiques de gestion des exceptions différentes de celles des API synchrones. Contrairement aux API synchrones, les API qui renvoient des opérations de longue durée réussissent même si l'opération sous-jacente échoue. Lorsque vous utilisez des API qui renvoient des opérations de longue durée, vous répondez aux codes d'erreur renvoyés dans les réponses de réussite, plutôt que de répondre aux codes d'erreur renvoyés dans les réponses d'échec.

Par exemple, si vous effectuez une requête de restauration groupée portant sur des objets soumis à suppression réversible, elle renvoie un code d'état HTTP positif (200 OK), même si une erreur se produit au cours de l'opération. Pour vérifier si l'opération de restauration groupée a réussi, interrogez l'état de l'opération de longue durée.

Notez que les API qui renvoient des opérations de longue durée (Get, Create, Cancel) sont synchrones et renvoient des erreurs normales.

Tentatives

Les API asynchrones de suppression réversible sont idempotentes par défaut. Par conséquent, vous pouvez relancer en toute sécurité des appels d'API asynchrones de suppression réversible, sans vous soucier d'avoir potentiellement modifié involontairement des ressources.

Étapes suivantes