Utiliser la gestion des versions des objets

Accéder aux concepts

Cette page explique comment configurer la gestion des versions d'objets et propose des exemples d'utilisation.

Configurer la gestion des versions d'objets

Les sections suivantes expliquent comment activer et désactiver la gestion des versions d'objets à l'aide de l'outil gsutil, de l'API JSON et de l'API XML. Cette fonctionnalité ne peut actuellement pas être contrôlée à partir de Google Cloud Console.

Activer la gestion des versions d'objets

Pour activer la gestion des versions d'objets sur un bucket, procédez comme suit :

gsutil

Exécutez la commande gsutil versioning set on :

gsutil versioning set on gs://[BUCKET_NAME]

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

Exemples de code

C++

Pour en savoir plus, consultez la documentation de référence de l'API Cloud Storage en langage C++.

namespace gcs = google::cloud::storage;
using ::google::cloud::StatusOr;
[](gcs::Client client, std::string const& bucket_name) {
  StatusOr<gcs::BucketMetadata> original =
      client.GetBucketMetadata(bucket_name);
  if (!original) throw std::runtime_error(original.status().message());

  StatusOr<gcs::BucketMetadata> patched = client.PatchBucket(
      bucket_name,
      gcs::BucketMetadataPatchBuilder().SetVersioning(
          gcs::BucketVersioning{true}),
      gcs::IfMetagenerationMatch(original->metageneration()));
  if (!patched) throw std::runtime_error(patched.status().message());

  if (patched->versioning().has_value()) {
    std::cout << "Object versioning for bucket " << bucket_name << " is "
              << (patched->versioning()->enabled ? "enabled" : "disabled")
              << "\n";
  } else {
    std::cout << "Object versioning for bucket " << bucket_name
              << " is disabled.\n";
  }
}

Java

Pour en savoir plus, consultez la documentation de référence de l'API Cloud Storage en langage Java.

import com.google.cloud.storage.Bucket;
import com.google.cloud.storage.Storage;
import com.google.cloud.storage.StorageOptions;

public class EnableBucketVersioning {
  public static void enableBucketVersioning(String projectId, String bucketName) {
    // The ID of your GCP project
    // String projectId = "your-project-id";

    // The ID of your GCS bucket
    // String bucketName = "your-unique-bucket-name";

    Storage storage = StorageOptions.newBuilder().setProjectId(projectId).build().getService();
    Bucket bucket = storage.get(bucketName);
    bucket.toBuilder().setVersioningEnabled(true).build().update();

    System.out.println("Versioning is now enabled for bucket " + bucketName);
  }
}

API REST

API JSON

  1. Obtenez un jeton d'autorisation d'accès sur la page OAuth 2.0 Playground. Configurez Playground pour utiliser vos propres identifiants OAuth.
  2. Créez un fichier .json contenant les informations suivantes :

    {
      "versioning": {
        "enabled": true
      }
    }
  3. Exécutez cURL pour appeler l'API JSON avec une requête de bucket PATCH :

    curl -X PATCH --data-binary @[JSON_FILE_NAME].json \
      -H "Authorization: Bearer [OAUTH2_TOKEN]" \
      -H "Content-Type: application/json" \
      "https://storage.googleapis.com/storage/v1/b/[BUCKET_NAME]?fields=versioning"

    Où :

    • [JSON_FILE_NAME] correspond au fichier que vous avez créé à l'étape 2.
    • [OAUTH2_TOKEN] correspond au jeton d'accès que vous avez généré à l'étape 1.
    • [BUCKET_NAME] correspond au nom du bucket concerné. Exemple :my-bucket

API XML

  1. Obtenez un jeton d'autorisation d'accès sur la page OAuth 2.0 Playground. Configurez Playground pour utiliser vos propres identifiants OAuth.
  2. Créez un fichier .xml contenant les informations suivantes :

    <VersioningConfiguration>
      <Status>Enabled</Status>
    </VersioningConfiguration>
  3. Exécutez la commande cURL pour appeler l'API XML avec une requête PUT Bucket et un paramètre de chaîne de requête versioning :

    curl -X PUT --data-binary @[XML_FILE_NAME].xml \
      -H "Authorization: Bearer [OAUTH2_TOKEN]" \
      "https://storage.googleapis.com/[BUCKET_NAME]?versioning"

    Où :

    • [XML_FILE_NAME] correspond au fichier que vous avez créé à l'étape 2.
    • [OAUTH2_TOKEN] correspond au jeton d'accès que vous avez généré à l'étape 1.
    • [BUCKET_NAME] correspond au nom du bucket concerné. Par exemple, my-bucket.

Une fois la gestion des versions d'objets activée, chaque fois qu'une version active est remplacée ou supprimée, elle devient une version obsolète.

Désactiver la gestion des versions d'objets

Pour désactiver la gestion des versions d'objets sur un bucket, procédez comme suit :

gsutil

Exécutez la commande gsutil versioning set off :

gsutil versioning set off gs://[BUCKET_NAME]

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

Exemples de code

C++

Pour en savoir plus, consultez la documentation de référence de l'API Cloud Storage en langage C++.

namespace gcs = google::cloud::storage;
using ::google::cloud::StatusOr;
[](gcs::Client client, std::string const& bucket_name) {
  StatusOr<gcs::BucketMetadata> original =
      client.GetBucketMetadata(bucket_name);
  if (!original) throw std::runtime_error(original.status().message());

  StatusOr<gcs::BucketMetadata> patched = client.PatchBucket(
      bucket_name,
      gcs::BucketMetadataPatchBuilder().SetVersioning(
          gcs::BucketVersioning{false}),
      gcs::IfMetagenerationMatch(original->metageneration()));
  if (!patched) throw std::runtime_error(patched.status().message());

  if (patched->versioning().has_value()) {
    std::cout << "Object versioning for bucket " << bucket_name << " is "
              << (patched->versioning()->enabled ? "enabled" : "disabled")
              << "\n";
  } else {
    std::cout << "Object versioning for bucket " << bucket_name
              << " is disabled.\n";
  }
}

Java

Pour en savoir plus, consultez la documentation de référence de l'API Cloud Storage en langage Java.

import com.google.cloud.storage.Bucket;
import com.google.cloud.storage.Storage;
import com.google.cloud.storage.StorageOptions;

public class DisableBucketVersioning {
  public static void disableBucketVersioning(String projectId, String bucketName) {
    // The ID of your GCP project
    // String projectId = "your-project-id";

    // The ID of your GCS bucket
    // String bucketName = "your-unique-bucket-name";

    Storage storage = StorageOptions.newBuilder().setProjectId(projectId).build().getService();
    Bucket bucket = storage.get(bucketName);
    bucket.toBuilder().setVersioningEnabled(false).build().update();

    System.out.println("Versioning is now disabled for bucket " + bucketName);
  }
}

API REST

API JSON

  1. Obtenez un jeton d'autorisation d'accès sur la page OAuth 2.0 Playground. Configurez Playground pour utiliser vos propres identifiants OAuth.
  2. Créez un fichier .json contenant les informations suivantes :

    {
      "versioning": {
        "enabled": false
      }
    }
  3. Exécutez cURL pour appeler l'API JSON avec une requête de bucket PATCH :

    curl -X PATCH --data-binary @[JSON_FILE_NAME].json \
      -H "Authorization: Bearer [OAUTH2_TOKEN]" \
      -H "Content-Type: application/json" \
      "https://storage.googleapis.com/storage/v1/b/[BUCKET_NAME]?fields=versioning"

    Où :

    • [JSON_FILE_NAME] correspond au fichier que vous avez créé à l'étape 2.
    • [OAUTH2_TOKEN] correspond au jeton d'accès que vous avez généré à l'étape 1.
    • [BUCKET_NAME] correspond au nom du bucket concerné. Exemple :my-bucket

API XML

  1. Obtenez un jeton d'autorisation d'accès sur la page OAuth 2.0 Playground. Configurez Playground pour utiliser vos propres identifiants OAuth.
  2. Créez un fichier .xml contenant les informations suivantes :

    <VersioningConfiguration>
      <Status>Suspended</Status>
    </VersioningConfiguration>
  3. Exécutez la commande cURL pour appeler l'API XML avec une requête PUT Bucket et un paramètre de chaîne de requête versioning :

    curl -X PUT --data-binary @[XML_FILE_NAME].xml \
      -H "Authorization: Bearer [OAUTH2_TOKEN]" \
      "https://storage.googleapis.com/[BUCKET_NAME]?versioning"

    Où :

    • [XML_FILE_NAME] correspond au fichier que vous avez créé à l'étape 2.
    • [OAUTH2_TOKEN] correspond au jeton d'accès que vous avez généré à l'étape 1.
    • [BUCKET_NAME] correspond au nom du bucket concerné. Par exemple, my-bucket.

Vérifier si la gestion des versions d'objets est activée

Pour vérifier si la gestion des versions d'objets est activée sur un bucket, procédez comme suit :

gsutil

Exécutez la commande gsutil versioning get :

gsutil versioning get gs://[BUCKET_NAME]

[BUCKET_NAME] est le nom du bucket concerné. Par exemple, my-bucket.

Si la gestion des versions d'objets est activée, vous obtenez une réponse semblable à la suivante :

gs://[BUCKET_NAME]: Enabled

API REST

API JSON

  1. Obtenez un jeton d'autorisation d'accès sur la page OAuth 2.0 Playground. Configurez Playground pour utiliser vos propres identifiants OAuth.
  2. Exécutez cURL pour appeler l'API JSON avec une requête de bucket GET :

    curl -X GET \
      -H "Authorization: Bearer [OAUTH2_TOKEN]" \
      "https://storage.googleapis.com/storage/v1/b/[BUCKET_NAME]?fields=versioning"

    Où :

    • [OAUTH2_TOKEN] correspond au jeton d'accès que vous avez généré à l'étape 1.
    • [BUCKET_NAME] correspond au nom du bucket concerné. Exemple :my-bucket

API XML

  1. Obtenez un jeton d'autorisation d'accès sur la page OAuth 2.0 Playground. Configurez Playground pour utiliser vos propres identifiants OAuth.
  2. Exécutez la commande cURL pour appeler l'API XML avec une requête GET Bucket et un paramètre de chaîne de requête versioning :

    curl -X GET \
      -H "Authorization: Bearer [OAUTH2_TOKEN]" \
      "https://storage.googleapis.com/[BUCKET_NAME]?versioning"

    Où :

    • [OAUTH2_TOKEN] correspond au jeton d'accès que vous avez généré à l'étape 1.
    • [BUCKET_NAME] correspond au nom du bucket concerné. Par exemple, my-bucket.

Utiliser des objets avec des versions gérées

Les sections suivantes expliquent comment utiliser des objets avec des versions gérées. Pour obtenir un exemple détaillé d'utilisation de la gestion des versions d'objets, consultez la section Exemple de gestion des versions d'objets.

Répertorier les versions d'objet archivées

Pour répertorier les versions actives et archivées d'un objet, et afficher leurs numéros de génération (generation), procédez comme suit :

gsutil

Exécutez la commande gsutil ls -a :

gsutil ls -a gs://[BUCKET_NAME]

[BUCKET_NAME] est le nom du bucket concerné. Par exemple, my-bucket.

La réponse est semblable à ceci :

gs://[BUCKET_NAME]/[OBJECT_NAME1]#[GENERATION_NUMBER1]
gs://[BUCKET_NAME]/[OBJECT_NAME1]#[GENERATION_NUMBER2]
gs://[BUCKET_NAME]/[OBJECT_NAME1]#[GENERATION_NUMBER3]
...

Exemples de code

C++

Pour en savoir plus, consultez la documentation de référence de l'API Cloud Storage en langage C++.

namespace gcs = google::cloud::storage;
[](gcs::Client client, std::string const& bucket_name) {
  for (auto&& object_metadata :
       client.ListObjects(bucket_name, gcs::Versions{true})) {
    if (!object_metadata) {
      throw std::runtime_error(object_metadata.status().message());
    }

    std::cout << "bucket_name=" << object_metadata->bucket()
              << ", object_name=" << object_metadata->name()
              << ", generation=" << object_metadata->generation() << "\n";
  }
}

Java

Pour en savoir plus, consultez la documentation de référence de l'API Cloud Storage en langage Java.

import com.google.api.gax.paging.Page;
import com.google.cloud.storage.Blob;
import com.google.cloud.storage.Bucket;
import com.google.cloud.storage.Storage;
import com.google.cloud.storage.StorageOptions;

public class ListObjectsWithOldVersions {
  public static void listObjectsWithOldVersions(String projectId, String bucketName) {
    // The ID of your GCP project
    // String projectId = "your-project-id";

    // The ID of your GCS bucket
    // String bucketName = "your-unique-bucket-name";
    Storage storage = StorageOptions.newBuilder().setProjectId(projectId).build().getService();
    Bucket bucket = storage.get(bucketName);
    Page<Blob> blobs = bucket.list(Storage.BlobListOption.versions(true));

    for (Blob blob : blobs.iterateAll()) {
      System.out.println(blob.getName() + "," + blob.getGeneration());
    }
  }
}

API REST

API JSON

  1. Obtenez un jeton d'autorisation d'accès sur la page OAuth 2.0 Playground. Configurez Playground pour utiliser vos propres identifiants OAuth.
  2. Exécutez la commande cURL pour appeler l'API JSON avec une requête LIST Object :

    curl -X GET \
      -H "Authorization: Bearer [OAUTH2_TOKEN]" \
      "https://storage.googleapis.com/storage/v1/b/[BUCKET_NAME]/o?versions=true"

    Où :

    • [OAUTH2_TOKEN] correspond au jeton d'accès que vous avez généré à l'étape 1.
    • [BUCKET_NAME] correspond au nom du bucket concerné. Par exemple, my-bucket.

Les versions archivées des objets possèdent une propriété timeDeleted.

API XML

  1. Obtenez un jeton d'autorisation d'accès sur la page OAuth 2.0 Playground. Configurez Playground pour utiliser vos propres identifiants OAuth.
  2. Exécutez la commande cURL pour appeler l'API XML avec une requête GET Bucket et un paramètre de chaîne de requête versions :

    curl -X GET \
      -H "Authorization: Bearer [OAUTH2_TOKEN]" \
      "https://storage.googleapis.com/[BUCKET_NAME]?versions"

    Où :

    • [OAUTH2_TOKEN] correspond au jeton d'accès que vous avez généré à l'étape 1.
    • [BUCKET_NAME] correspond au nom du bucket concerné. Par exemple, my-bucket.

Les résultats de la requête GET peuvent être légèrement différents lorsque vous utilisez le paramètre de requête versions. Plus précisément, Cloud Storage renvoie les informations suivantes lorsque vous incluez un paramètre versions dans votre requête :

  • Un élément Version qui contient des informations sur chaque objet.
  • Un élément DeletedTime qui contient l'heure d'archivage de l'objet (en cas de suppression ou d'écrasement).
  • Un élément IsLatest qui indique si l'objet spécifique constitue la dernière version.
  • Un élément NextGenerationMarker est renvoyé si la liste d'objets est partielle, ce qui se produit lorsqu'un bucket dispose de nombreuses versions d'objets. Utilisez la valeur de cet élément dans le paramètre generationmarker des requêtes ultérieures si vous souhaitez reprendre à partir de votre dernier point. Le paramètre de requête generationmarker s'utilise de la même manière que le paramètre marker, qui sert à parcourir une liste associée à un bucket sans versions gérées.

Accéder aux versions d'objet archivées

Pour utiliser la version archivée d'un objet lors de l'exécution de tâches, telles que le téléchargement de l'objet, l'affichage ou la mise à jour de ses métadonnées, procédez comme suit :

gsutil

  1. Ajoutez le numéro de génération (generation) de la version archivée au nom de l'objet :

    [OBJECT_NAME]#[GENERATION_NUMBER]

    Où :

    • [OBJECT_NAME] correspond au nom de la version archivée. Par exemple, pets/dog.png.
    • [GENERATION_NUMBER] correspond au numéro de génération de la version archivée. Par exemple, 1560468815691234.
  2. À l'aide de la chaîne de l'étape 1, procédez comme vous le feriez normalement avec la version active de l'objet.

API REST

API JSON

  1. Ajoutez le numéro de génération (generation) de la version archivée à la fin de l'URI de l'objet :

    https://storage.googleapis.com/storage/v1/b/[BUCKET_NAME]/o/[OBJECT_NAME]?generation=[GENERATION_NUMBER]

    Où :

    • [BUCKET_NAME] correspond au nom du bucket contenant la version archivée. Par exemple, my-bucket.
    • [OBJECT_NAME] correspond au nom de la version archivée. Exemple : pets/dog.png.
    • [GENERATION_NUMBER] correspond au numéro de génération de la version archivée. Par exemple, 1560468815691234.
  2. À l'aide de l'URI de l'étape 1, procédez comme vous le feriez normalement avec la version active de l'objet.

API XML

  1. Ajoutez le numéro de génération (generation) de la version archivée à la fin de l'URI de l'objet :

    https://storage.googleapis.com/[BUCKET_NAME]/[OBJECT_NAME]?generation=[GENERATION_NUMBER]

    Où :

    • [BUCKET_NAME] correspond au nom du bucket contenant la version archivée. Par exemple, my-bucket.
    • [OBJECT_NAME] correspond au nom de la version archivée. Exemple : pets/dog.png.
    • [GENERATION_NUMBER] correspond au numéro de génération de la version archivée. Par exemple, 1560468815691234.
  2. À l'aide de l'URI de l'étape 1, procédez comme vous le feriez normalement avec la version active de l'objet.

Copier des versions d'objet archivées

Pour copier une version archivée d'un objet, procédez comme suit :

gsutil

Exécutez la commande gsutil cp :

gsutil cp gs://[SOURCE_BUCKET_NAME]/[SOURCE_OBJECT_NAME]#[GENERATION_NUMBER] gs://[DESTINATION_BUCKET_NAME]/[DESTINATION_OBJECT_NAME]

Où :

  • [SOURCE_BUCKET_NAME] correspond au nom du bucket contenant la version archivée que vous souhaitez copier. Par exemple, my-bucket.
  • [SOURCE_OBJECT_NAME] correspond au nom de la version archivée que vous souhaitez copier. Par exemple, pets/dog.png.
  • [GENERATION_NUMBER] correspond au numéro de génération de la version archivée que vous souhaitez copier. Par exemple, 1560468815691234.
  • [DESTINATION_BUCKET_NAME] correspond au nom du bucket dans lequel vous souhaitez copier la version archivée. Par exemple, my-bucket.
  • [DESTINATION_OBJECT_NAME] correspond au nom de la copie de la version archivée. Exemple :pets/shiba.png

Si l'opération réussit, la réponse se présente comme suit :

Operation completed over 1 objects/58.8 KiB.

Exemples de code

C++

Pour en savoir plus, consultez la documentation de référence de l'API Cloud Storage en langage C++.

namespace gcs = google::cloud::storage;
using ::google::cloud::StatusOr;
[](gcs::Client client, std::string const& source_bucket_name,
   std::string const& source_object_name,
   std::string const& destination_bucket_name,
   std::string const& destination_object_name,
   std::int64_t source_object_generation) {
  StatusOr<gcs::ObjectMetadata> copy =
      client.CopyObject(source_bucket_name, source_object_name,
                        destination_bucket_name, destination_object_name,
                        gcs::SourceGeneration{source_object_generation});
  if (!copy) throw std::runtime_error(copy.status().message());

  std::cout << "Successfully copied " << source_object_name << " generation "
            << source_object_generation << " in bucket " << source_bucket_name
            << " to bucket " << copy->bucket() << " with name "
            << copy->name()
            << ".\nThe full metadata after the copy is: " << *copy << "\n";
}

Java

Pour en savoir plus, consultez la documentation de référence de l'API Cloud Storage en langage Java.

import com.google.cloud.storage.BlobId;
import com.google.cloud.storage.Storage;
import com.google.cloud.storage.StorageOptions;

public class CopyOldVersionOfObject {
  public static void copyOldVersionOfObject(
      String projectId,
      String bucketName,
      String objectToCopy,
      long generationToCopy,
      String newObjectName) {
    // The ID of your GCP project
    // String projectId = "your-project-id";

    // The ID of your GCS bucket
    // String bucketName = "your-unique-bucket-name";

    // The ID of the GCS object to copy an old version of
    // String objectToCopy = "your-object-name";

    // The generation of objectToCopy to copy
    // long generationToCopy = 1579287380533984;

    // What to name the new object with the old data from objectToCopy
    // String newObjectName = "your-new-object";

    Storage storage = StorageOptions.newBuilder().setProjectId(projectId).build().getService();
    Storage.CopyRequest copyRequest =
        Storage.CopyRequest.newBuilder()
            .setSource(BlobId.of(bucketName, objectToCopy, generationToCopy))
            .setTarget(BlobId.of(bucketName, newObjectName))
            .build();
    storage.copy(copyRequest);

    System.out.println(
        "Generation "
            + generationToCopy
            + " of object "
            + objectToCopy
            + " in bucket "
            + bucketName
            + " was copied to "
            + newObjectName);
  }
}

API REST

API JSON

  1. Obtenez un jeton d'autorisation d'accès sur la page OAuth 2.0 Playground. Configurez Playground pour utiliser vos propres identifiants OAuth.
  2. Exécutez la commande cURL pour appeler l'API JSON avec une requête POST Object :

    curl -X POST \
      -H "Authorization: Bearer [OAUTH2_TOKEN]" \
      -H "Content-Length: 0" \
      "https://storage.googleapis.com/upload/storage/v1/b/[SOURCE_BUCKET_NAME]/o/[SOURCE_OBJECT_NAME]/rewriteTo/b/[DESTINATION_BUCKET_NAME]/o/[NAME_OF_COPY]?sourceGeneration=[GENERATION_NUMBER]"

    Où :

    • [OAUTH2_TOKEN] correspond au jeton d'accès que vous avez généré à l'étape 1.
    • [SOURCE_BUCKET_NAME] correspond au nom du bucket contenant la version archivée que vous souhaitez copier. Par exemple, my-bucket.
    • [SOURCE_OBJECT_NAME] correspond au nom de la version archivée que vous souhaitez copier. Par exemple, pets/dog.png.
    • [DESTINATION_BUCKET_NAME] correspond au nom du bucket dans lequel vous souhaitez copier la version archivée. Par exemple, my-bucket.
    • [NAME OF COPY] correspond au nom de la copie de la version archivée. Par exemple, pets/shiba.png.
    • [GENERATION_NUMBER] correspond au numéro de génération de la version archivée que vous souhaitez copier. Par exemple, 1560468815691234.

API XML

  1. Obtenez un jeton d'autorisation d'accès sur la page OAuth 2.0 Playground. Configurez Playground pour utiliser vos propres identifiants OAuth.
  2. Exécutez la commande cURL pour appeler l'API XML avec une requête PUT Object :

    curl -X PUT \
      -H "Authorization: Bearer [OAUTH2_TOKEN]" \
      -H "x-goog-copy-source: [SOURCE_BUCKET_NAME]/[SOURCE_OBJECT_NAME]" \
      -H "x-goog-copy-source-generation:[GENERATION_NUMBER]" \
      "https://storage.googleapis.com/[DESTINATION_BUCKET_NAME]/[NAME_OF_COPY]"

    Où :

    • [OAUTH2_TOKEN] correspond au jeton d'accès que vous avez généré à l'étape 1.
    • [SOURCE_BUCKET_NAME] correspond au nom du bucket contenant la version archivée que vous souhaitez copier. Par exemple, my-bucket.
    • [SOURCE_OBJECT_NAME] correspond au nom de la version archivée que vous souhaitez copier. Par exemple, pets/dog.png.
    • [GENERATION_NUMBER] correspond au numéro de génération de la version archivée que vous souhaitez copier. Par exemple, 1560468815691234.
    • [DESTINATION_BUCKET_NAME] correspond au nom du bucket dans lequel vous souhaitez copier la version archivée. Par exemple, my-bucket.
    • [NAME OF COPY] correspond au nom de la copie de la version archivée. Par exemple, pets/shiba.png.

Supprimer des versions d'objet archivées

Pour supprimer une version archivée d'un objet, procédez comme suit :

gsutil

Exécutez la commande gsutil rm :

gsutil rm gs://[BUCKET_NAME]/[OBJECT_NAME]#[GENERATION_NUMBER]

Où :

  • [BUCKET_NAME] correspond au nom du bucket contenant la version archivée que vous souhaitez supprimer. Par exemple, my-bucket.
  • [OBJECT_NAME] correspond au nom de la version archivée que vous souhaitez supprimer. Par exemple, pets/dog.png.
  • [GENERATION_NUMBER] correspond au numéro de génération de la version archivée que vous souhaitez supprimer. Par exemple, 1560468815691234.

Si l'opération réussit, la réponse se présente comme suit :

Operation completed over 1 objects.

Exemples de code

C++

Pour en savoir plus, consultez la documentation de référence de l'API Cloud Storage en langage C++.

namespace gcs = google::cloud::storage;
[](gcs::Client client, std::string const& bucket_name,
   std::string const& object_name, std::int64_t object_generation) {
  google::cloud::Status status = client.DeleteObject(
      bucket_name, object_name, gcs::Generation{object_generation});
  if (!status.ok()) throw std::runtime_error(status.message());

  std::cout << "Deleted " << object_name << " generation "
            << object_generation << " in bucket " << bucket_name << "\n";
}

Java

Pour en savoir plus, consultez la documentation de référence de l'API Cloud Storage en langage Java.

import com.google.cloud.storage.BlobId;
import com.google.cloud.storage.Storage;
import com.google.cloud.storage.StorageOptions;

public class DeleteOldVersionOfObject {
  public static void deleteOldVersionOfObject(
      String projectId, String bucketName, String objectName, long generationToDelete) {
    // The ID of your GCP project
    // String projectId = "your-project-id";

    // The ID of your GCS bucket
    // String bucketName = "your-unique-bucket-name";

    // The ID of your GCS object
    // String objectName = "your-object-name";

    // The generation of objectName to delete
    // long generationToDelete = 1579287380533984;

    Storage storage = StorageOptions.newBuilder().setProjectId(projectId).build().getService();
    storage.delete(BlobId.of(bucketName, objectName, generationToDelete));

    System.out.println(
        "Generation "
            + generationToDelete
            + " of object "
            + objectName
            + " was deleted from "
            + bucketName);
  }
}

API REST

API JSON

  1. Obtenez un jeton d'autorisation d'accès sur la page OAuth 2.0 Playground. Configurez Playground pour utiliser vos propres identifiants OAuth.
  2. Exécutez la commande cURL pour appeler l'API JSON avec une requête DELETE Object :

    curl -X DELETE \
      -H "Authorization: Bearer [OAUTH2_TOKEN]" \
      "https://storage.googleapis.com/storage/v1/b/[BUCKET_NAME]/o/[OBJECT_NAME]?generation=[GENERATION_NUMBER]"

    Où :

    • [OAUTH2_TOKEN] correspond au jeton d'accès que vous avez généré à l'étape 1.
    • [BUCKET_NAME] correspond au nom du bucket contenant la version archivée que vous souhaitez supprimer. Par exemple, my-bucket.
    • [OBJECT_NAME] correspond au nom de la version archivée que vous souhaitez supprimer. Par exemple, pets/dog.png.
    • [GENERATION_NUMBER] correspond au numéro de génération de la version archivée que vous souhaitez supprimer. Par exemple, 1560468815691234.

API XML

  1. Obtenez un jeton d'autorisation d'accès sur la page OAuth 2.0 Playground. Configurez Playground pour utiliser vos propres identifiants OAuth.
  2. Exécutez la commande cURL pour appeler l'API XML avec une requête DELETE Object :

    curl -X DELETE \
      -H "Authorization: Bearer [OAUTH2_TOKEN]" \
      "https://storage.googleapis.com/[BUCKET_NAME]/[OBJECT_NAME]?generation=[GENERATION_NUMBER]"

    Où :

    • [OAUTH2_TOKEN] correspond au jeton d'accès que vous avez généré à l'étape 1.
    • [BUCKET_NAME] correspond au nom du bucket contenant la version archivée que vous souhaitez supprimer. Par exemple, my-bucket.
    • [OBJECT_NAME] correspond au nom de la version archivée que vous souhaitez supprimer. Par exemple, pets/dog.png.
    • [GENERATION_NUMBER] correspond au numéro de génération de la version archivée que vous souhaitez supprimer. Par exemple, 1560468815691234.

Étapes suivantes