Utiliser la préservation à titre conservatoire des objets

Cette page explique comment utiliser la préservation à titre conservatoire des objets, en particulier la préservation par défaut des nouveaux objets et le placement de préservations sur des objets spécifiques. Pour en savoir plus sur cette fonctionnalité, y compris les types de préservations pouvant être placées sur des objets, consultez la section Préservation à titre conservatoire des objets.

Prérequis

Avant d'utiliser cette fonctionnalité dans Cloud Storage, vous devez :

  1. Disposer des autorisations suffisantes pour consulter et mettre à jour les buckets et les objets dans Cloud Storage, à savoir :

    • Si vous êtes propriétaire du projet contenant le bucket, vous disposez probablement des autorisations nécessaires.

    • Si vous utilisez IAM (gestion de l'authentification et des accès), vous devez disposer des autorisations storage.buckets.update, storage.buckets.get, storage.objects.update et storage.objects.get sur le bucket correspondant. Consultez la page Utiliser les autorisations IAM pour savoir comment obtenir un rôle disposant de ces autorisations, tel que roles/storage.admin.

    • Si vous utilisez des listes de contrôle d'accès (LCA), vous devez disposer de l'autorisation OWNER (propriétaire) sur le bucket et les objets qu'il contient. Pour savoir comment procéder, consultez la section Configurer des LCA.

Utiliser la propriété de préservation à titre conservatoire basée sur des événements activée par défaut

Les tâches suivantes expliquent comment activer, afficher et désactiver la propriété par défaut de préservation basée sur des événements sur un bucket. Lorsque cette propriété est activée, une préservation basée sur des événements est automatiquement placée sur tout nouvel objet ajouté au bucket.

Activer par défaut la propriété de préservation à titre conservatoire basée sur des événements

Pour placer automatiquement une préservation à titre conservatoire basée sur des événements sur chaque nouvel objet ajouté à un bucket, procédez comme suit :

Console

  1. Ouvrez le navigateur Cloud Storage dans la console Google Cloud Platform.
    Ouvrir le navigateur Cloud Storage
  2. Dans la liste des buckets, cliquez sur le nom du bucket pour lequel vous souhaitez activer par défaut la propriété de préservation à titre conservatoire basée sur des événements.

  3. Sélectionnez l'onglet Verrou de bucket en haut de la page.

  4. Dans l'entrée Préservations à titre conservatoire basées sur les événements par défaut, cliquez sur le bouton Désactivé.

gsutil

Exécutez la commande gsutil retention event-default set, en remplaçant les éléments entre crochets ([VALUES_IN_BRACKETS]) par les valeurs appropriées :

gsutil retention event-default set gs://[BUCKET_NAME]

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 bucket_name) {
  StatusOr<gcs::BucketMetadata> original =
      client.GetBucketMetadata(bucket_name);

  if (!original) {
    throw std::runtime_error(original.status().message());
  }

  StatusOr<gcs::BucketMetadata> patched_metadata = client.PatchBucket(
      bucket_name,
      gcs::BucketMetadataPatchBuilder().SetDefaultEventBasedHold(true),
      gcs::IfMetagenerationMatch(original->metageneration()));

  if (!patched_metadata) {
    throw std::runtime_error(patched_metadata.status().message());
  }

  std::cout << "The default event-based hold for objects in bucket "
            << bucket_name << " is "
            << (patched_metadata->default_event_based_hold() ? "enabled"
                                                             : "disabled")
            << "\n";
}

C#

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

private void EnableBucketDefaultEventBasedHold(string bucketName)
{
    var storage = StorageClient.Create();
    var bucket = storage.GetBucket(bucketName);
    bucket.DefaultEventBasedHold = true;
    bucket = storage.UpdateBucket(bucket, new UpdateBucketOptions()
    {
        // Use IfMetagenerationMatch to avoid race conditions.
        IfMetagenerationMatch = bucket.Metageneration
    });
    Console.WriteLine($"Default event-based hold was enabled for {bucketName}");
}

Go

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

bucket := c.Bucket(bucketName)
bucketAttrsToUpdate := storage.BucketAttrsToUpdate{
	DefaultEventBasedHold: true,
}
if _, err := bucket.Update(ctx, bucketAttrsToUpdate); err != nil {
	return err
}

Java

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

// Instantiate a Google Cloud Storage client
Storage storage = StorageOptions.getDefaultInstance().getService();

// The name of a bucket, e.g. "my-bucket"
// String bucketName = "my-bucket";

Bucket bucket =
    storage.update(BucketInfo.newBuilder(bucketName).setDefaultEventBasedHold(true).build());

System.out.println("Default event-based hold was enabled for " + bucketName);

Node.js

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

// Imports the Google Cloud client library
const {Storage} = require('@google-cloud/storage');

// Creates a client
const storage = new Storage();

/**
 * TODO(developer): Uncomment the following lines before running the sample.
 */
// const bucketName = 'Name of a bucket, e.g. my-bucket';

// Enables a default event-based hold for the bucket.
await storage.bucket(bucketName).setMetadata({
  defaultEventBasedHold: true,
});

console.log(`Default event-based hold was enabled for ${bucketName}.`);

PHP

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

use Google\Cloud\Storage\StorageClient;

/**
 * Enables a default event-based hold for a bucket.
 *
 * @param string $bucketName the name of your Cloud Storage bucket.
 */
function enable_default_event_based_hold($bucketName)
{
    $storage = new StorageClient();
    $bucket = $storage->bucket($bucketName);
    $bucket->update(['defaultEventBasedHold' => true]);
    printf('Default event-based hold was enabled for %s' . PHP_EOL, $bucketName);
}

Python

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

# bucket_name = "my-bucket"

storage_client = storage.Client()
bucket = storage_client.bucket(bucket_name)

bucket.default_event_based_hold = True
bucket.patch()

print('Default event based hold was enabled for {}'.format(bucket_name))

Ruby

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

# project_id  = "Your Google Cloud project ID"
# bucket_name = "Name of your Google Cloud Storage bucket"

require "google/cloud/storage"

storage = Google::Cloud::Storage.new project_id: project_id
bucket  = storage.bucket bucket_name

bucket.update do |b|
  b.default_event_based_hold = true
end

puts "Default event-based hold was enabled for #{bucket_name}."

API REST

API JSON

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

    {
      "defaultEventBasedHold": true
    }
  3. Exécutez cURL pour appeler l'API JSON avec une requête de bucket PATCH, en remplaçant les éléments entre crochets ([VALUES_IN_BRACKETS]) par les valeurs appropriées :

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

API XML

L'API XML ne peut pas être utilisée pour gérer les préservations d'objets à titre conservatoire. Utilisez plutôt un autre outil Cloud Storage, tel que gsutil.

Obtenir l'état de préservation à titre conservatoire par défaut d'un bucket

Pour savoir si un bucket place par défaut une préservation à titre conservatoire basée sur des événements sur les nouveaux objets, procédez comme suit :

Console

  1. Ouvrez le navigateur Cloud Storage dans la console Google Cloud Platform.
    Ouvrir le navigateur Cloud Storage
  2. Dans la liste des buckets, cliquez sur le nom du bucket pour lequel vous souhaitez vérifier le statut de l'option par défaut "Préservation basée sur des événements".

  3. Sélectionnez l'onglet Verrou de bucket en haut de la page.

  4. L'état s'affiche dans l'entrée Préservation basée sur des événements activée par défaut.

gsutil

Exécutez la commande gsutil ls suivante, en remplaçant les éléments entre crochets ([VALUES_IN_BRACKETS]) par les valeurs appropriées :

gsutil ls -L -b gs://[BUCKET_NAME]/

La réponse est semblable à ceci :

gs://[BUCKET_NAME]/ :
  Storage class:         MULTI_REGIONAL
  ...
  ...
  Default Event-Based Hold: On
  ...

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 bucket_name) {
  StatusOr<gcs::BucketMetadata> bucket_metadata =
      client.GetBucketMetadata(bucket_name);

  if (!bucket_metadata) {
    throw std::runtime_error(bucket_metadata.status().message());
  }

  std::cout << "The default event-based hold for objects in bucket "
            << bucket_metadata->name() << " is "
            << (bucket_metadata->default_event_based_hold() ? "enabled"
                                                            : "disabled")
            << "\n";
}

C#

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

private bool GetBucketDefaultEventBasedHold(string bucketName)
{
    var storage = StorageClient.Create();
    var bucket = storage.GetBucket(bucketName);
    bool? defaultEventBasedHoldOrNull = bucket?.DefaultEventBasedHold;
    bool defaultEventBasedHold =
        defaultEventBasedHoldOrNull.HasValue ? defaultEventBasedHoldOrNull.Value : false;
    Console.WriteLine("Default event-based hold: {0}", defaultEventBasedHold);
    return defaultEventBasedHold;
}

Go

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

attrs, err := c.Bucket(bucketName).Attrs(ctx)
if err != nil {
	return nil, err
}
log.Printf("Default event-based hold enabled? %t\n",
	attrs.DefaultEventBasedHold)

Java

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

// Instantiate a Google Cloud Storage client
Storage storage = StorageOptions.getDefaultInstance().getService();

// The name of a bucket, e.g. "my-bucket"
// String bucketName = "my-bucket";

Bucket bucket =
    storage.get(bucketName, BucketGetOption.fields(BucketField.DEFAULT_EVENT_BASED_HOLD));

if (bucket.getDefaultEventBasedHold() != null && bucket.getDefaultEventBasedHold()) {
  System.out.println("Default event-based hold is enabled for " + bucketName);
} else {
  System.out.println("Default event-based hold is not enabled for " + bucketName);
}

Node.js

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

// Imports the Google Cloud client library
const {Storage} = require('@google-cloud/storage');

// Creates a client
const storage = new Storage();

/**
 * TODO(developer): Uncomment the following lines before running the sample.
 */
// const bucketName = 'Name of a bucket, e.g. my-bucket';

// get bucketName metadata
const [metadata] = await storage.bucket(bucketName).getMetadata();
console.log(`Default event-based hold: ${metadata.defaultEventBasedHold}.`);

PHP

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

use Google\Cloud\Storage\StorageClient;

/**
 * Enables a default event-based hold for a bucket.
 *
 * @param string $bucketName the name of your Cloud Storage bucket.
 */
function get_default_event_based_hold($bucketName)
{
    $storage = new StorageClient();
    $bucket = $storage->bucket($bucketName);

    if ($bucket->info()['defaultEventBasedHold']) {
        printf('Default event-based hold is enabled for ' . $bucketName . PHP_EOL);
    } else {
        printf('Default event-based hold is not enabled for ' . $bucketName . PHP_EOL);
    }
}

Python

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

# bucket_name = "my-bucket"

storage_client = storage.Client()
bucket = storage_client.bucket(bucket_name)
bucket.reload()

if bucket.default_event_based_hold:
    print('Default event-based hold is enabled for {}'.format(bucket_name))
else:
    print('Default event-based hold is not enabled for {}'
          .format(bucket_name))

Ruby

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

# project_id  = "Your Google Cloud project ID"
# bucket_name = "Name of your Google Cloud Storage bucket"

require "google/cloud/storage"

storage = Google::Cloud::Storage.new project_id: project_id
bucket  = storage.bucket bucket_name

if bucket.default_event_based_hold?
  puts "Default event-based hold is enabled for {bucket_name}."
else
  puts "Default event-based hold is not enabled for {bucket_name}."
end

API REST

API JSON

  1. Obtenez un jeton d'accès d'autorisation sur la page OAuth 2.0 Playground. Configurez Playground de façon à utiliser vos propres identifiants OAuth.
  2. Exécutez cURL pour appeler l'API JSON avec une requête de bucket GET qui inclut les champs fields souhaités, en remplaçant les éléments entre crochets ([VALUES_IN_BRACKETS]) par les valeurs appropriées :

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

    Si la préservation à titre conservatoire basée sur des événements est activée par défaut sur le bucket, la réponse est semblable à ceci :

    {
      "retentionPolicy": true
    }

API XML

L'API XML ne peut pas être utilisée pour gérer les préservations d'objets à titre conservatoire. Utilisez plutôt un autre outil Cloud Storage, tel que gsutil.

Désactiver une préservation à titre conservatoire basée sur des événements activée par défaut

Pour désactiver une préservation basée sur des événements activée par défaut sur un bucket, procédez comme suit :

Console

  1. Ouvrez le navigateur Cloud Storage dans la console Google Cloud Platform.
    Ouvrir le navigateur Cloud Storage
  2. Dans la liste des buckets, cliquez sur le nom du bucket pour lequel vous souhaitez désactiver l'option par défaut de préservation à titre conservatoire basée sur des événements.

  3. Sélectionnez l'onglet Verrou de bucket en haut de la page.

  4. Dans l'entrée Préservations à titre conservatoire basées sur les événements par défaut, cliquez sur le bouton Activé.

gsutil

Exécutez la commande gsutil retention event-default release, en remplaçant les éléments entre crochets ([VALUES_IN_BRACKETS]) par les valeurs appropriées :

gsutil retention event-default release gs://[BUCKET_NAME]

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 bucket_name) {
  StatusOr<gcs::BucketMetadata> original =
      client.GetBucketMetadata(bucket_name);

  if (!original) {
    throw std::runtime_error(original.status().message());
  }

  StatusOr<gcs::BucketMetadata> patched_metadata = client.PatchBucket(
      bucket_name,
      gcs::BucketMetadataPatchBuilder().SetDefaultEventBasedHold(false),
      gcs::IfMetagenerationMatch(original->metageneration()));

  if (!patched_metadata) {
    throw std::runtime_error(patched_metadata.status().message());
  }

  std::cout << "The default event-based hold for objects in bucket "
            << bucket_name << " is "
            << (patched_metadata->default_event_based_hold() ? "enabled"
                                                             : "disabled")
            << "\n";
}

C#

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

private void DisableBucketDefaultEventBasedHold(string bucketName)
{
    var storage = StorageClient.Create();
    var bucket = storage.GetBucket(bucketName);
    bucket.DefaultEventBasedHold = false;
    bucket = storage.UpdateBucket(bucket, new UpdateBucketOptions()
    {
        // Use IfMetagenerationMatch to avoid race conditions.
        IfMetagenerationMatch = bucket.Metageneration
    });
    Console.WriteLine($"Default event-based hold was disabled for {bucketName}");
}

Go

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

bucket := c.Bucket(bucketName)
bucketAttrsToUpdate := storage.BucketAttrsToUpdate{
	DefaultEventBasedHold: false,
}
if _, err := bucket.Update(ctx, bucketAttrsToUpdate); err != nil {
	return err
}

Java

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

// Instantiate a Google Cloud Storage client
Storage storage = StorageOptions.getDefaultInstance().getService();

// The name of a bucket, e.g. "my-bucket"
// String bucketName = "my-bucket";

Bucket bucket =
    storage.update(BucketInfo.newBuilder(bucketName).setDefaultEventBasedHold(false).build());

System.out.println("Default event-based hold was disabled for " + bucketName);

Node.js

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

// Imports the Google Cloud client library
const {Storage} = require('@google-cloud/storage');

// Creates a client
const storage = new Storage();

/**
 * TODO(developer): Uncomment the following lines before running the sample.
 */
// const bucketName = 'Name of a bucket, e.g. my-bucket';

// Disables a default event-based hold for a bucket.
await storage.bucket(bucketName).setMetadata({
  defaultEventBasedHold: false,
});
console.log(`Default event-based hold was disabled for ${bucketName}.`);

PHP

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

use Google\Cloud\Storage\StorageClient;

/**
 * Disables a default event-based hold for a bucket.
 *
 * @param string $bucketName the name of your Cloud Storage bucket.
 */
function disable_default_event_based_hold($bucketName)
{
    $storage = new StorageClient();
    $bucket = $storage->bucket($bucketName);
    $bucket->update(['defaultEventBasedHold' => false]);
    printf('Default event-based hold was disabled for %s' . PHP_EOL, $bucketName);
}

Python

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

# bucket_name = "my-bucket"

storage_client = storage.Client()
bucket = storage_client.bucket(bucket_name)

bucket.default_event_based_hold = False
bucket.patch()

print("Default event based hold was disabled for {}".format(bucket_name))

Ruby

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

# project_id  = "Your Google Cloud project ID"
# bucket_name = "Name of your Google Cloud Storage bucket"

require "google/cloud/storage"

storage = Google::Cloud::Storage.new project_id: project_id
bucket  = storage.bucket bucket_name

bucket.update do |b|
  b.default_event_based_hold = false
end

puts "Default event-based hold was disabled for #{bucket_name}."

API REST

API JSON

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

    {
      "defaultEventBasedHold": false
    }
  3. Exécutez cURL pour appeler l'API JSON avec une requête de bucket PATCH, en remplaçant les éléments entre crochets ([VALUES_IN_BRACKETS]) par les valeurs appropriées :

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

API XML

L'API XML ne peut pas être utilisée pour gérer les préservations d'objets à titre conservatoire. Utilisez plutôt un autre outil Cloud Storage, tel que gsutil.

Utiliser les préservations d'objets à titre conservatoire

Les tâches suivantes expliquent comment placer, consulter et lever des préservations à titre conservatoire sur des objets.

Placer une préservation d'objet

Pour placer une préservation à titre conservatoire sur un objet du bucket, procédez comme suit :

Console

  1. Ouvrez le navigateur Cloud Storage dans la console Google Cloud Platform.
    Ouvrir le navigateur Cloud Storage
  2. Dans la liste des buckets, cliquez sur le nom du bucket contenant les objets sur lesquels vous souhaitez placer une préservation à titre conservatoire.

  3. Cochez la case en regard du nom des objets que vous souhaitez préserver.

  4. Cliquez sur le bouton Gérer les préservations.

    La fenêtre Gérer les préservations apparaît.

  5. Cochez la case en regard des types de préservations que vous souhaitez placer sur les objets sélectionnés.

  6. Cliquez sur Enregistrer les paramètres de préservation.

gsutil

Exécutez la commande gsutil retention avec un paramètre [HOLD_TYPE] défini sur temp ou event, en remplaçant les autres éléments entre crochets ([VALUES_IN_BRACKETS]) par les valeurs appropriées :

gsutil retention [HOLD_TYPE] set gs://[BUCKET_NAME]/[OBJECT_NAME]

Exemples de code

C++

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

L'exemple suivant définit une préservation basée sur des événements placée sur un objet :

namespace gcs = google::cloud::storage;
using ::google::cloud::StatusOr;
[](gcs::Client client, std::string bucket_name, std::string object_name) {
  StatusOr<gcs::ObjectMetadata> original =
      client.GetObjectMetadata(bucket_name, object_name);

  if (!original) {
    throw std::runtime_error(original.status().message());
  }

  StatusOr<gcs::ObjectMetadata> updated = client.PatchObject(
      bucket_name, object_name,
      gcs::ObjectMetadataPatchBuilder().SetEventBasedHold(true),
      gcs::IfMetagenerationMatch(original->metageneration()));

  if (!updated) {
    throw std::runtime_error(updated.status().message());
  }

  std::cout << "The event hold for object " << updated->name()
            << " in bucket " << updated->bucket() << " is "
            << (updated->event_based_hold() ? "enabled" : "disabled") << "\n";
}

L'exemple suivant définit une préservation temporaire placée sur un objet :

namespace gcs = google::cloud::storage;
using ::google::cloud::StatusOr;
[](gcs::Client client, std::string bucket_name, std::string object_name) {
  StatusOr<gcs::ObjectMetadata> original =
      client.GetObjectMetadata(bucket_name, object_name);

  if (!original) {
    throw std::runtime_error(original.status().message());
  }

  StatusOr<gcs::ObjectMetadata> updated = client.PatchObject(
      bucket_name, object_name,
      gcs::ObjectMetadataPatchBuilder().SetTemporaryHold(true),
      gcs::IfMetagenerationMatch(original->metageneration()));

  if (!updated) {
    throw std::runtime_error(updated.status().message());
  }

  std::cout << "The temporary hold for object " << updated->name()
            << " in bucket " << updated->bucket() << " is "
            << (updated->temporary_hold() ? "enabled" : "disabled") << "\n";
}

C#

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

L'exemple suivant définit une préservation basée sur des événements placée sur un objet :

private void SetObjectEventBasedHold(string bucketName,
    string objectName)
{
    var storage = StorageClient.Create();
    var storageObject = storage.GetObject(bucketName, objectName);
    storageObject.EventBasedHold = true;
    storageObject = storage.UpdateObject(storageObject, new UpdateObjectOptions()
    {
        // Use IfMetagenerationMatch to avoid race conditions.
        IfMetagenerationMatch = storageObject.Metageneration
    });
}

L'exemple suivant définit une préservation temporaire placée sur un objet :

private void SetObjectTemporaryHold(string bucketName,
    string objectName)
{
    var storage = StorageClient.Create();
    var storageObject = storage.GetObject(bucketName, objectName);
    storageObject.TemporaryHold = true;
    storageObject = storage.UpdateObject(storageObject, new UpdateObjectOptions()
    {
        // Use IfMetagenerationMatch to avoid race conditions.
        IfMetagenerationMatch = storageObject.Metageneration,
    });
}

Go

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

L'exemple suivant définit une préservation basée sur des événements placée sur un objet :

o := client.Bucket(bucket).Object(object)
objectAttrsToUpdate := storage.ObjectAttrsToUpdate{
	EventBasedHold: true,
}
if _, err := o.Update(ctx, objectAttrsToUpdate); err != nil {
	return err
}

L'exemple suivant définit une préservation temporaire placée sur un objet :

o := client.Bucket(bucket).Object(object)
objectAttrsToUpdate := storage.ObjectAttrsToUpdate{
	TemporaryHold: true,
}
if _, err := o.Update(ctx, objectAttrsToUpdate); err != nil {
	return err
}

Java

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

L'exemple suivant définit une préservation basée sur des événements placée sur un objet :

// Instantiate a Google Cloud Storage client
Storage storage = StorageOptions.getDefaultInstance().getService();

// The name of a bucket, e.g. "my-bucket"
// String bucketName = "my-bucket";

// The name of a blob, e.g. "my-blob"
// String blobName = "my-blob";

BlobId blobId = BlobId.of(bucketName, blobName);
Blob blob = storage.update(BlobInfo.newBuilder(blobId).setEventBasedHold(true).build());

System.out.println("Event-based hold was set for " + blobName);

L'exemple suivant définit une préservation temporaire placée sur un objet :

// Instantiate a Google Cloud Storage client
Storage storage = StorageOptions.getDefaultInstance().getService();

// The name of a bucket, e.g. "my-bucket"
// String bucketName = "my-bucket";

// The name of a blob, e.g. "my-blob"
// String blobName = "my-blob";

BlobId blobId = BlobId.of(bucketName, blobName);
Blob blob = storage.update(BlobInfo.newBuilder(blobId).setTemporaryHold(true).build());

System.out.println("Temporary hold was set for " + blobName);

Node.js

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

L'exemple suivant définit une préservation basée sur des événements placée sur un objet :

// Imports the Google Cloud client library
const {Storage} = require('@google-cloud/storage');

// Creates a client
const storage = new Storage();

/**
 * TODO(developer): Uncomment the following lines before running the sample.
 */
// const bucketName = 'Name of a bucket, e.g. my-bucket';
// const filename = 'File to access, e.g. file.txt';

// Set event-based hold
await storage
  .bucket(bucketName)
  .file(fileName)
  .setMetadata({
    eventBasedHold: true,
  });
console.log(`Event-based hold was set for ${fileName}.`);

L'exemple suivant définit une préservation temporaire placée sur un objet :

// Imports the Google Cloud client library
const {Storage} = require('@google-cloud/storage');

// Creates a client
const storage = new Storage();

/**
 * TODO(developer): Uncomment the following lines before running the sample.
 */
// const bucketName = 'Name of a bucket, e.g. my-bucket';
// const filename = 'File to access, e.g. file.txt';

await storage
  .bucket(bucketName)
  .file(fileName)
  .setMetadata({
    temporaryHold: true,
  });
console.log(`Temporary hold was set for ${fileName}.`);

PHP

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

L'exemple suivant définit une préservation basée sur des événements placée sur un objet :

use Google\Cloud\Storage\StorageClient;

/**
 * Sets an event-based hold for an object.
 *
 * @param string $bucketName the name of your Cloud Storage bucket.
 * @param string $objectName the name of your Cloud Storage object.
 */
function set_event_based_hold($bucketName, $objectName)
{
    $storage = new StorageClient();
    $bucket = $storage->bucket($bucketName);
    $object = $bucket->object($objectName);
    $object->update(['eventBasedHold' => true]);
    printf('Event-based hold was set for %s' . PHP_EOL, $objectName);
}

L'exemple suivant définit une préservation temporaire placée sur un objet :

use Google\Cloud\Storage\StorageClient;

/**
 * Sets a temporary hold for an object.
 *
 * @param string $bucketName the name of your Cloud Storage bucket.
 * @param string $objectName the name of your Cloud Storage object.
 */
function set_temporary_hold($bucketName, $objectName)
{
    $storage = new StorageClient();
    $bucket = $storage->bucket($bucketName);
    $object = $bucket->object($objectName);
    $object->update(['temporaryHold' => true]);
    printf('Temporary hold was set for %s' . PHP_EOL, $objectName);
}

Python

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

L'exemple suivant définit une préservation basée sur des événements placée sur un objet :

# bucket_name = "my-bucket"
# blob_name = "my-blob"

storage_client = storage.Client()
bucket = storage_client.bucket(bucket_name)
blob = bucket.blob(blob_name)

blob.event_based_hold = True
blob.patch()

print('Event based hold was set for {}'.format(blob_name))

L'exemple suivant définit une préservation temporaire placée sur un objet :

# bucket_name = "my-bucket"
# blob_name = "my-blob"

storage_client = storage.Client()
bucket = storage_client.bucket(bucket_name)
blob = bucket.blob(blob_name)

blob.temporary_hold = True
blob.patch()

print("Temporary hold was set for #{blob_name}")

Ruby

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

L'exemple suivant définit une préservation basée sur des événements placée sur un objet :

# project_id  = "Your Google Cloud project ID"
# bucket_name = "Your Google Cloud Storage bucket name"
# file_name   = "Name of a file in the Cloud Storage bucket"

require "google/cloud/storage"

storage = Google::Cloud::Storage.new project_id: project_id
bucket  = storage.bucket bucket_name
file    = bucket.file file_name

file.set_event_based_hold!

puts "Event-based hold was set for #{file_name}."

L'exemple suivant définit une préservation temporaire placée sur un objet :

# project_id  = "Your Google Cloud project ID"
# bucket_name = "Your Google Cloud Storage bucket name"
# file_name   = "Name of a file in the Cloud Storage bucket"

require "google/cloud/storage"

storage = Google::Cloud::Storage.new project_id: project_id
bucket  = storage.bucket bucket_name
file    = bucket.file file_name

file.set_temporary_hold!

puts "Temporary hold was set for #{file_name}."

API REST

API JSON

  1. Obtenez un jeton d'accès d'autorisation sur la page OAuth 2.0 Playground. Configurez Playground de façon à utiliser vos propres identifiants OAuth.
  2. Créez un fichier .json contenant les informations suivantes, en remplaçant [HOLD_TYPE] par les valeurs temporaryHold ou eventBasedHold :

    {
      "[HOLD_TYPE]": true
    }
  3. Exécutez cURL pour appeler l'API JSON avec une requête d'objet PATCH, en remplaçant les éléments entre crochets ([VALUES_IN_BRACKETS]) par les valeurs appropriées :

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

API XML

L'API XML ne peut pas être utilisée pour gérer les préservations d'objets à titre conservatoire. Utilisez plutôt un autre outil Cloud Storage, tel que gsutil.

Obtenir l'état de préservation d'un objet

Pour consulter les préservations éventuelles existant sur un objet, suivez les instructions générales fournies à la section Afficher les métadonnées d'objet.

Lever une préservation d'objet

Pour lever une préservation à titre conservatoire placée sur un objet du bucket, procédez comme suit :

Console

  1. Ouvrez le navigateur Cloud Storage dans la console Google Cloud Platform.
    Ouvrir le navigateur Cloud Storage
  2. Dans la liste des buckets, cliquez sur le nom du bucket contenant les objets dont vous souhaitez supprimer la préservation.

  3. Cochez la case en regard du nom des objets dont vous souhaitez supprimer la préservation.

  4. Cliquez sur le bouton Gérer les préservations.

    La fenêtre Gérer les préservations apparaît.

  5. Décochez la case correspondant aux préservations que vous souhaitez supprimer.

  6. Cliquez sur Enregistrer les paramètres de préservation.

gsutil

Exécutez la commande gsutil retention avec un paramètre [HOLD_TYPE] défini sur temp ou event, en remplaçant les autres éléments entre crochets ([VALUES_IN_BRACKETS]) par les valeurs appropriées :

gsutil retention [HOLD_TYPE] release gs://[BUCKET_NAME]/[OBJECT_NAME]

Exemples de code

C++

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

L'exemple suivant définit une préservation basée sur des événements placée sur un objet :

namespace gcs = google::cloud::storage;
using ::google::cloud::StatusOr;
[](gcs::Client client, std::string bucket_name, std::string object_name) {
  StatusOr<gcs::ObjectMetadata> original =
      client.GetObjectMetadata(bucket_name, object_name);

  if (!original) {
    throw std::runtime_error(original.status().message());
  }

  StatusOr<gcs::ObjectMetadata> updated = client.PatchObject(
      bucket_name, object_name,
      gcs::ObjectMetadataPatchBuilder().SetEventBasedHold(false),
      gcs::IfMetagenerationMatch(original->metageneration()));

  if (!updated) {
    throw std::runtime_error(updated.status().message());
  }

  std::cout << "The event hold for object " << updated->name()
            << " in bucket " << updated->bucket() << " is "
            << (updated->event_based_hold() ? "enabled" : "disabled") << "\n";
}

L'exemple suivant définit une préservation temporaire placée sur un objet :

namespace gcs = google::cloud::storage;
using ::google::cloud::StatusOr;
[](gcs::Client client, std::string bucket_name, std::string object_name) {
  StatusOr<gcs::ObjectMetadata> original =
      client.GetObjectMetadata(bucket_name, object_name);

  if (!original) {
    throw std::runtime_error(original.status().message());
  }

  StatusOr<gcs::ObjectMetadata> updated = client.PatchObject(
      bucket_name, object_name,
      gcs::ObjectMetadataPatchBuilder().SetTemporaryHold(false),
      gcs::IfMetagenerationMatch(original->metageneration()));

  if (!updated) {
    throw std::runtime_error(updated.status().message());
  }

  std::cout << "The temporary hold for object " << updated->name()
            << " in bucket " << updated->bucket() << " is "
            << (updated->temporary_hold() ? "enabled" : "disabled") << "\n";
}

C#

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

L'exemple suivant lève une préservation basée sur des événements placée sur un objet :

private void ReleaseObjectEventBasedHold(string bucketName,
    string objectName)
{
    var storage = StorageClient.Create();
    var storageObject = storage.GetObject(bucketName, objectName);
    storageObject.EventBasedHold = false;
    storageObject = storage.UpdateObject(storageObject, new UpdateObjectOptions()
    {
        // Use IfMetagenerationMatch to avoid race conditions.
        IfMetagenerationMatch = storageObject.Metageneration,
    });
}

L'exemple suivant lève une préservation temporaire placée sur un objet :

private void ReleaseObjectTemporaryHold(string bucketName,
    string objectName)
{
    var storage = StorageClient.Create();
    var storageObject = storage.GetObject(bucketName, objectName);
    storageObject.TemporaryHold = false;
    storageObject = storage.UpdateObject(storageObject, new UpdateObjectOptions()
    {
        // Use IfMetagenerationMatch to avoid race conditions.
        IfMetagenerationMatch = storageObject.Metageneration,
    });
}

Go

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

L'exemple suivant lève une préservation basée sur des événements placée sur un objet :

o := client.Bucket(bucket).Object(object)
objectAttrsToUpdate := storage.ObjectAttrsToUpdate{
	EventBasedHold: false,
}
if _, err := o.Update(ctx, objectAttrsToUpdate); err != nil {
	return err
}

L'exemple suivant lève une préservation temporaire placée sur un objet :

o := client.Bucket(bucket).Object(object)
objectAttrsToUpdate := storage.ObjectAttrsToUpdate{
	TemporaryHold: false,
}
if _, err := o.Update(ctx, objectAttrsToUpdate); err != nil {
	return err
}

Java

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

L'exemple suivant lève une préservation basée sur des événements placée sur un objet :

// Instantiate a Google Cloud Storage client
Storage storage = StorageOptions.getDefaultInstance().getService();

// The name of a bucket, e.g. "my-bucket"
// String bucketName = "my-bucket";

// The name of a blob, e.g. "my-blob"
// String blobName = "my-blob";

BlobId blobId = BlobId.of(bucketName, blobName);
Blob blob = storage.update(BlobInfo.newBuilder(blobId).setEventBasedHold(false).build());

System.out.println("Event-based hold was released for " + blobName);

L'exemple suivant lève une préservation temporaire placée sur un objet :

// Instantiate a Google Cloud Storage client
Storage storage = StorageOptions.getDefaultInstance().getService();

// The name of a bucket, e.g. "my-bucket"
// String bucketName = "my-bucket";

// The name of a blob, e.g. "my-blob"
// String blobName = "my-blob";

BlobId blobId = BlobId.of(bucketName, blobName);
Blob blob = storage.update(BlobInfo.newBuilder(blobId).setTemporaryHold(false).build());

System.out.println("Temporary hold was released for " + blobName);

Node.js

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

L'exemple suivant lève une préservation basée sur des événements placée sur un objet :

// Imports the Google Cloud client library
const {Storage} = require('@google-cloud/storage');

// Creates a client
const storage = new Storage();

/**
 * TODO(developer): Uncomment the following lines before running the sample.
 */
// const bucketName = 'Name of a bucket, e.g. my-bucket';
// const filename = 'File to access, e.g. file.txt';

await storage
  .bucket(bucketName)
  .file(fileName)
  .setMetadata({
    eventBasedHold: false,
  });
console.log(`Event-based hold was released for ${fileName}.`);

L'exemple suivant lève une préservation temporaire placée sur un objet :

// Imports the Google Cloud client library
const {Storage} = require('@google-cloud/storage');

// Creates a client
const storage = new Storage();

/**
 * TODO(developer): Uncomment the following lines before running the sample.
 */
// const bucketName = 'Name of a bucket, e.g. my-bucket';
// const filename = 'File to access, e.g. file.txt';

await storage
  .bucket(bucketName)
  .file(fileName)
  .setMetadata({
    temporaryHold: false,
  });
console.log(`Temporary hold was released for ${fileName}.`);

PHP

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

L'exemple suivant lève une préservation basée sur des événements placée sur un objet :

use Google\Cloud\Storage\StorageClient;

/**
 * Releases an event-based hold for an object.
 *
 * @param string $bucketName the name of your Cloud Storage bucket.
 * @param string $objectName the name of your Cloud Storage object.
 */
function release_event_based_hold($bucketName, $objectName)
{
    $storage = new StorageClient();
    $bucket = $storage->bucket($bucketName);
    $object = $bucket->object($objectName);
    $object->update(['eventBasedHold' => false]);
    printf('Event-based hold was released for %s' . PHP_EOL, $objectName);
}

L'exemple suivant lève une préservation temporaire placée sur un objet :

use Google\Cloud\Storage\StorageClient;

/**
 * Releases a temporary hold for an object.
 *
 * @param string $bucketName the name of your Cloud Storage bucket.
 * @param string $objectName the name of your Cloud Storage object.
 */
function release_temporary_hold($bucketName, $objectName)
{
    $storage = new StorageClient();
    $bucket = $storage->bucket($bucketName);
    $object = $bucket->object($objectName);
    $object->update(['temporaryHold' => false]);
    printf('Temporary hold was released for %s' . PHP_EOL, $objectName);
}

Python

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

L'exemple suivant lève une préservation basée sur des événements placée sur un objet :

# bucket_name = "my-bucket"
# blob_name = "my-blob"

storage_client = storage.Client()
bucket = storage_client.bucket(bucket_name)
blob = bucket.blob(blob_name)

blob.event_based_hold = False
blob.patch()

print('Event based hold was released for {}'.format(blob_name))

L'exemple suivant lève une préservation temporaire placée sur un objet :

# bucket_name = "my-bucket"
# blob_name = "my-blob"

storage_client = storage.Client()
bucket = storage_client.bucket(bucket_name)
blob = bucket.blob(blob_name)

blob.temporary_hold = False
blob.patch()

print("Temporary hold was release for #{blob_name}")

Ruby

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

L'exemple suivant lève une préservation basée sur des événements placée sur un objet :

# project_id  = "Your Google Cloud project ID"
# bucket_name = "Your Google Cloud Storage bucket name"
# file_name   = "Name of a file in the Cloud Storage bucket"

require "google/cloud/storage"

storage = Google::Cloud::Storage.new project_id: project_id
bucket  = storage.bucket bucket_name
file    = bucket.file file_name

file.release_event_based_hold!

puts "Event-based hold was released for #{file_name}."

L'exemple suivant lève une préservation temporaire placée sur un objet :

# project_id  = "Your Google Cloud project ID"
# bucket_name = "Your Google Cloud Storage bucket name"
# file_name   = "Name of a file in the Cloud Storage bucket"

require "google/cloud/storage"

storage = Google::Cloud::Storage.new project_id: project_id
bucket  = storage.bucket bucket_name
file    = bucket.file file_name

file.release_temporary_hold!

puts "Temporary hold was released for #{file_name}."

API REST

API JSON

  1. Obtenez un jeton d'accès d'autorisation sur la page OAuth 2.0 Playground. Configurez Playground de façon à utiliser vos propres identifiants OAuth.
  2. Créez un fichier .json contenant les informations suivantes, en remplaçant [HOLD_TYPE] par les valeurs temporaryHold ou eventBasedHold :

    {
      "[HOLD_TYPE]": false
    }
  3. Exécutez cURL pour appeler l'API JSON avec une requête d'objet PATCH, en remplaçant les éléments entre crochets ([VALUES_IN_BRACKETS]) par les valeurs appropriées :

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

API XML

L'API XML ne peut pas être utilisée pour gérer les préservations d'objets à titre conservatoire. Utilisez plutôt un autre outil Cloud Storage, tel que gsutil.

Étapes suivantes

Cette page vous a-t-elle été utile ? Évaluez-la :

Envoyer des commentaires concernant…

Besoin d'aide ? Consultez notre page d'assistance.