Utiliser la gestion des versions d'objets

Présentation Utilisation

Cette page explique comment activer, désactiver et vérifier l'état de la gestion des versions d'objets sur un bucket. Consultez la page Utiliser des objets avec des versions gérées pour savoir comment répertorier, restaurer et supprimer les objets conservés par la gestion des versions d'objets.

Rôles requis

Pour obtenir les autorisations nécessaires pour définir et gérer les versions des objets dans un bucket, demandez à votre administrateur de vous accorder le rôle IAM "Administrateur de l'espace de stockage" (roles/storage.admin) sur le bucket ou le projet qui contient le bucket. Ce rôle prédéfini contient les autorisations requises pour définir et gérer les versions d'objets dans un bucket. Pour connaître les autorisations exactes requises, développez la section Autorisations requises :

Autorisations requises

  • storage.buckets.get
  • storage.buckets.update
  • storage.buckets.list
    • Cette autorisation n'est nécessaire que si vous prévoyez d'utiliser la consoleGoogle Cloud pour suivre les instructions de cette page.

Vous pouvez également obtenir ces autorisations avec des rôles personnalisés.

Pour en savoir plus sur l'attribution de rôles sur des buckets, consultez Définir et gérer des stratégies IAM sur des buckets. Pour savoir comment attribuer des rôles aux projets, consultez Gérer l'accès aux projets.

Définir la gestion des versions d'objets sur un bucket

Vous pouvez activer ou désactiver la gestion des versions d'objets en définissant la fonctionnalité sur un 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.

Console

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

    Accéder à la page "Buckets"

  2. Dans la liste des buckets, cliquez sur le nom du bucket pour lequel vous souhaitez activer ou désactiver la gestion des versions des objets.

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

    L'état actuel de la gestion des versions des objets s'affiche dans la section Gestion des versions des objets.

  4. Dans la section Gestion des versions des objets, cliquez sur l'état actuel pour le modifier.

    La boîte de dialogue Gestion des versions des objets s'affiche.

    1. Si vous activez la gestion des versions des objets et que vous souhaitez réduire les coûts de stockage, cochez la case Ajouter les règles de cycle de vie recommandées pour gérer les coûts de version.
  5. Cliquez sur Confirmer.

Ligne de commande

Exécutez la commande gcloud storage buckets update avec l'option appropriée :

gcloud storage buckets update gs://BUCKET_NAME FLAG

Où :

  • BUCKET_NAME correspond au nom du bucket concerné. Par exemple, my-bucket.

  • FLAG correspond soit à --versioning pour activer la gestion des versions d'objets, soit à --no-versioning pour la désactiver.

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

Updating gs://my-bucket/...
  Completed 1  

Bibliothèques clientes

C++

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

Pour vous authentifier auprès de Cloud Storage, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour les bibliothèques clientes.

L'exemple suivant active la gestion des versions des objets sur un bucket :

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::move(original).status();

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

  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";
  }
}

L'exemple suivant désactive la gestion des versions des objets sur un bucket :

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::move(original).status();

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

  auto versioning =
      patched->versioning().value_or(gcs::BucketVersioning{false});
  std::cout << "Object versioning for bucket " << bucket_name << " is "
            << (versioning.enabled ? "enabled" : "disabled") << "\n";
}

C#

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

Pour vous authentifier auprès de Cloud Storage, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour les bibliothèques clientes.

L'exemple suivant active la gestion des versions des objets sur un bucket :


using Google.Apis.Storage.v1.Data;
using Google.Cloud.Storage.V1;
using System;

public class BucketEnableVersioningSample
{
	public Bucket BucketEnableVersioning(string bucketName = "your-bucket-name")
	{
		var storage = StorageClient.Create();
		var bucket = storage.GetBucket(bucketName);

		if (bucket.Versioning == null)
		{
			bucket.Versioning = new Bucket.VersioningData();
		}
		bucket.Versioning.Enabled = true;

		bucket = storage.UpdateBucket(bucket);
		Console.WriteLine($"Versioning is now enabled for bucket {bucketName}.");
		return bucket;
	}
}

L'exemple suivant désactive la gestion des versions des objets sur un bucket :


using Google.Apis.Storage.v1.Data;
using