Déplacer et renommer des buckets

Lorsque vous créez un bucket, vous définissez de manière permanente son nom, sa zone géographique ainsi que le projet auquel il appartient. Cependant, vous pouvez tout de même déplacer ou renommer votre bucket dans les situations suivantes :

  • Si votre ancien bucket ne contient pas de données, il vous suffit de le supprimer et d'en créer un autre sous un nouveau nom, à un nouvel emplacement ou dans un nouveau projet.

  • Si votre ancien bucket contient des données, créez-en un nouveau avec le nom, la zone et le projet souhaités, copiez les données de l'ancien bucket dans le nouveau, puis supprimez l'ancien bucket et son contenu. Les étapes suivantes décrivent ce processus.

    Notez que si vous souhaitez que votre nouveau bucket porte le même nom que l'ancien, vous devez déplacer vos données à deux reprises : un bucket intermédiaire stocke temporairement vos données afin que vous puissiez supprimer celui d'origine et libérer son nom pour le nouveau bucket.

Pour déplacer vos données d'un bucket à un autre, procédez comme suit.

Étape 1 : Créez un bucket

Console

  1. Ouvrez le navigateur Cloud Storage dans la console Google Cloud Platform.
    Ouvrir le navigateur Cloud Storage
  2. Cliquez sur Create a bucket (Créer un bucket) pour ouvrir le formulaire de création de bucket.
  3. Nouveau bucket.

  4. Saisissez les informations relatives à votre bucket et cliquez sur Continue (Continuer) à chaque étape :
    • Renseignez le champ Name (Nom) conformément aux exigences concernant les noms de buckets.
    • Sélectionnez la Default storage class (classe de stockage par défaut) du bucket. Cette classe de stockage par défaut sera attribuée par défaut à tous les objets importés dans le bucket. Ensuite, sélectionnez l'emplacement (Location) où les données du bucket seront stockées de manière permanente.

      Remarque : Le panneau Monthly cost estimate (Estimation du coût mensuel) du volet de droite donne une estimation des coûts mensuels du bucket en fonction de la classe de stockage et de l'emplacement sélectionnés, ainsi que des opérations et du volume de données attendus.

    • Sélectionnez un Access control model (modèle de contrôle d'accès) pour déterminer comment contrôler l'accès aux objets du bucket.
    • Vous pouvez également ajouter des bucket labels (étiquettes de buckets), définir une retention policy (règle de conservation) et choisir une encryption method (méthode de chiffrement).
  5. Cliquez sur OK.

gsutil

Exécutez la commande gsutil mb :

gsutil mb gs://[BUCKET_NAME]/

Où :

  • [BUCKET_NAME] correspond au nom que vous souhaitez attribuer au bucket, ce nom étant soumis à des exigences de dénomination. Par exemple, my-bucket.

Définissez les indicateurs facultatifs suivants pour mieux contrôler la création du bucket :

  • -p : spécifiez le projet auquel le bucket sera associé. Par exemple, my-project.
  • -c : spécifiez la classe de stockage par défaut du bucket. Par exemple, nearline.
  • -l : spécifiez l'emplacement du bucket. Par exemple, us-east1.
  • -b : activez la fonctionnalité Stratégie du bucket seulement pour le bucket.

Exemple :

  gsutil mb -p [PROJECT_NAME] -c [STORAGE_CLASS] -l [BUCKET_LOCATION] -b on 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> bucket_metadata =
      client.CreateBucket(bucket_name, gcs::BucketMetadata());

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

  std::cout << "Bucket " << bucket_metadata->name() << " created."
            << "\nFull Metadata: " << *bucket_metadata << "\n";
}

C#

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

private void CreateBucket(string bucketName)
{
    var storage = StorageClient.Create();
    storage.CreateBucket(s_projectId, bucketName);
    Console.WriteLine($"Created {bucketName}.");
}

Go

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

bucket := client.Bucket(bucketName)
if err := bucket.Create(ctx, projectID, &storage.BucketAttrs{
	StorageClass: "COLDLINE",
	Location:     "asia",
}); err != nil {
	return err
}

Java

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

Bucket bucket =
    storage.create(
        BucketInfo.newBuilder(bucketName)
            // See here for possible values: http://g.co/cloud/storage/docs/storage-classes
            .setStorageClass(StorageClass.COLDLINE)
            // Possible values: http://g.co/cloud/storage/docs/bucket-locations#location-mr
            .setLocation("asia")
            .build());

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 line before running the sample.
 */
// const bucketName = 'Name of a bucket, e.g. my-bucket';

// Creates a new bucket in the Asia region with the coldline default storage
// class. Leave the second argument blank for default settings.
//
// For default values see: https://cloud.google.com/storage/docs/locations and
// https://cloud.google.com/storage/docs/storage-classes
await storage.createBucket(bucketName, {
  location: 'ASIA',
  storageClass: 'COLDLINE',
});

console.log(`Bucket ${bucketName} created.`);

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;

/**
 * Create a Cloud Storage Bucket.
 *
 * @param string $bucketName name of the bucket to create.
 * @param string $options options for the new bucket.
 *
 */
function create_bucket($bucketName, $options = [])
{
    $storage = new StorageClient();
    $bucket = $storage->createBucket($bucketName, $options);
    printf('Bucket created: %s' . PHP_EOL, $bucket->name());
}

Python

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

def create_bucket(bucket_name):
    """Creates a new bucket."""
    storage_client = storage.Client()
    bucket = storage_client.create_bucket(bucket_name)
    print('Bucket {} created'.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 Google Cloud Storage bucket to create"
# location      = "Location of where to create Cloud Storage bucket"
# storage_class = "Storage class of Cloud Storage bucket"

require "google/cloud/storage"

storage = Google::Cloud::Storage.new project_id: project_id
bucket  = storage.create_bucket bucket_name,
                                location:      location,
                                storage_class: storage_class

puts "Created bucket #{bucket.name} in #{location}" +
     " with #{storage_class} class"

API REST

API JSON

  1. Obtenez un jeton d'autorisation d'accès 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 :
  3. {
      "name": "[BUCKET_NAME]",
      "location": "[BUCKET_LOCATION]",
      "storageClass": "[STORAGE_CLASS]"
    }

    Où :

    • [BUCKET_NAME] correspond au nom que vous souhaitez attribuer au bucket, ce nom étant soumis à des exigences de dénomination. Par exemple, my-bucket.
    • [BUCKET_LOCATION] correspond à l'emplacement où vous souhaitez stocker les données d'objets du bucket. Par exemple, us-east1.
    • [STORAGE_CLASS] est la classe de stockage par défaut du bucket. Par exemple, nearline.
  4. Utilisez cURL pour appeler l'API JSON :
    curl -X POST --data-binary @[JSON_FILE_NAME].json \
         -H "Authorization: Bearer [OAUTH2_TOKEN]" \
         -H "Content-Type: application/json" \
         "https://www.googleapis.com/storage/v1/b?project=[PROJECT_ID]"

    Où :

    • [JSON_FILE_NAME] correspond au nom du fichier JSON que vous avez créé à l'étape 2.
    • [OAUTH2_TOKEN] correspond au jeton d'accès que vous avez généré à l'étape 1.
    • [PROJECT_ID] correspond à l'ID du projet auquel le bucket sera associé. Par exemple, my-project.

API XML

  1. Obtenez un jeton d'autorisation d'accès sur la page OAuth 2.0 Playground. Configurez Playground de façon à utiliser vos propres identifiants OAuth.
  2. Créez un fichier .xml contenant les informations suivantes :
  3. <CreateBucketConfiguration>
       <LocationConstraint>[BUCKET_LOCATION]</LocationConstraint>
       <StorageClass>[STORAGE_CLASS]</StorageClass>
    </CreateBucketConfiguration>

    Où :

  4. Utilisez cURL pour appeler l'API XML :
    curl -X PUT --data-binary @[XML_FILE_NAME].xml \
         -H "Authorization: Bearer [OAUTH2_TOKEN]" \
         -H "x-goog-project-id: [PROJECT_ID]" \
         "https://storage.googleapis.com/[BUCKET_NAME]"

    Où :

    • [XML_FILE_NAME] correspond au nom du fichier XML que vous avez créé à l'étape 2.
    • [OAUTH2_TOKEN] correspond au jeton d'accès que vous avez généré à l'étape 1.
    • [PROJECT_ID] correspond à l'ID du projet auquel le bucket sera associé. Par exemple, my-project.
    • [BUCKET_NAME] correspond au nom que vous souhaitez attribuer au bucket, ce nom étant soumis à des exigences de dénomination. Par exemple, my-bucket.

Étape 2 : Copiez les fichiers de votre ancien bucket vers le nouveau

Console

Utilisez le service de transfert de stockage Cloud depuis la console Google Cloud Platform pour copier des données d'un bucket Cloud Storage à un autre :

  1. Ouvrez la page "Transfert" dans la console Google Cloud Platform.

    Ouvrir la page Transfert

  2. Cliquez sur Créer une tâche de transfert.
  3. Suivez la procédure détaillée en cliquant sur Continuer à chaque étape.

    • Sélectionnez la source : choisissez Bucket Google Cloud Storage comme source sélectionnée, puis cliquez sur Parcourir pour rechercher et sélectionner le bucket à partir duquel vous souhaitez déplacer vos objets.

    • Sélectionnez la destination : cliquez sur Parcourir pour rechercher et sélectionner le bucket dans lequel vous souhaitez déplacer vos objets.

      Cochez également la case Supprimer les objets sources à la fin du transfert.

    • Configurez le transfert : vous pouvez ignorer cette section.

  4. Une fois la procédure détaillée suivie, cliquez sur Créer.

    Cette validation entraîne la copie des fichiers de votre ancien bucket dans le nouveau. Ce processus peut prendre un certain temps. Cependant, après avoir cliqué sur Créer, vous pouvez quitter la console Google Cloud Platform.

Pour afficher la progression du transfert, ouvrez la page "Transfert" dans la console Google Cloud Platform.

Ouvrir la page Transfert

gsutil

  1. Assurez-vous d'avoir installé au minimum gsutil 4.12.
  2. Exécutez la commande gsutil cp avec l'option -r pour copier de manière récursive tous les objets du bucket source dans le bucket de destination :

    gsutil cp -r gs://[SOURCE_BUCKET]/* gs://[DESTINATION_BUCKET]

    Où :

    • [SOURCE_BUCKET] correspond au nom du bucket d'origine. Par exemple, old-bucket.
    • [DESTINATION_BUCKET] correspond au nom du nouveau bucket que vous avez créé à l'étape 1  (Créez un bucket). Par exemple, my-bucket.

API REST

API JSON

Utilisez la méthode rewrite de l'API JSON pour copier des données sous forme de fragments de taille limitée sur plusieurs requêtes. Lorsque vous procédez ainsi, vous devez exécuter la méthode rewrite en boucle jusqu'à ce que toutes les données soient déplacées :

  1. Utilisez cURL et la méthode rewrite de l'API JSON pour copier les données d'un bucket source dans un bucket de destination :

    curl -X POST \
    -H "Authorization: Bearer [OAUTH2_TOKEN]" \
    -H "Content-Length: 0" \
    "https://www.googleapis.com/storage/v1/b/[SOURCE_BUCKET]/o/[OBJECT_NAME]/rewriteTo/b/[DESTINATION_BUCKET]/o/[OBJECT_NAME]"

    Où :

    • [OAUTH2_TOKEN] correspond au jeton d'accès que vous avez généré dans la première partie de l'étape 1  (Créez un bucket).
    • [SOURCE_BUCKET] correspond au nom du bucket d'origine. Par exemple, old-bucket.
    • [OBJECT_NAME] correspond au nom de l'objet que vous souhaitez copier. Par exemple, pets/dog.png.
    • [DESTINATION_BUCKET] correspond au nom du nouveau bucket que vous avez créé à l'étape 1  (Créez un bucket). Par exemple, my-bucket.

    Par exemple, si la taille de l'objet est de 10 Go, la réponse à cette requête se présente comme l'exemple suivant :

    {
    "kind": "storage#rewriteResponse",
    "totalBytesRewritten": 1048576,
    "objectSize": 10000000000,
    "done": false,
    "rewriteToken": [TOKEN_VALUE]
    }
  2. Utilisez rewriteToken dans une requête ultérieure pour continuer à copier des données :

    curl -X POST \
    -H "Authorization: Bearer [OAUTH2_TOKEN]" \
    -H "Content-Length: 0" \
    -d '{"rewriteToken": "[TOKEN_VALUE]"}' \
    "https://www.googleapis.com/storage/v1/b/[SOURCE_BUCKET]/o/[OBJECT_NAME]/rewriteTo/b/[DESTINATION_BUCKET]/o/[OBJECT_NAME]"

    Où :

    • [OAUTH2_TOKEN] correspond au jeton d'accès que vous avez généré dans la première partie de l'étape 1  (Créez un bucket).
    • [TOKEN_VALUE] correspond à la valeur rewriteToken renvoyée à l'étape 1.
    • [SOURCE_BUCKET] correspond au nom du bucket d'origine. Par exemple, old-bucket.
    • [OBJECT_NAME] correspond au nom de l'objet que vous souhaitez copier. Par exemple, pets/bunny.png.
    • [DESTINATION_BUCKET] correspond au nom du nouveau bucket que vous avez créé à l'étape 1  (Créez un bucket). Par exemple, my-bucket.

Lorsque toutes les données sont copiées, la propriété done de la dernière réponse a la valeur true, la réponse n'a pas de propriété rewriteToken et les métadonnées de l'objet copié sont incluses dans la propriété resource.

{
  "kind": "storage#rewriteResponse",
  "totalBytesRewritten": 10000000000,
  "objectSize": 10000000000,
  "done": true,
  "resource": objects Resource
}

Étape 3 : Supprimez les fichiers de votre ancien bucket

Console

Lorsque vous effectuez la copie d'objets à l'aide du service de transfert, les fichiers de votre ancien bucket sont automatiquement supprimés sans que vous ayez à intervenir. Cela suppose que vous ayez coché la case "Supprimer les objets sources à la fin du transfert".

gsutil

Utilisez la commande gsutil rm avec l'option -r pour supprimer de manière récursive tous les objets du bucket source, ainsi que le bucket source lui-même :

gsutil rm -r gs://[SOURCE_BUCKET]

[SOURCE_BUCKET] correspond au nom du bucket d'origine. Par exemple, old-bucket.

Si vous souhaitez supprimer les objets tout en conservant le bucket source, exécutez la commande suivante :

gsutil rm -a gs://[SOURCE_BUCKET]/**

API REST

API JSON

  • Utilisez cURL et la méthode delete de l'API JSON pour supprimer la version originale de vos données à l'aide de la commande suivante :

    curl -X DELETE \
    -H "Authorization: Bearer [OAUTH2_TOKEN]" \
    "https://www.googleapis.com/storage/v1/b/[SOURCE_BUCKET]/o/[OBJECT_NAME]"

    Où :

    • [OAUTH2_TOKEN] correspond au jeton d'accès que vous avez généré dans la première partie de l'étape 1  (Créez un bucket).
    • [SOURCE_BUCKET] correspond au nom du bucket d'origine. Par exemple, old-bucket.
    • [OBJECT_NAME] correspond au nom de l'objet que vous souhaitez supprimer. Par exemple, pets/dog.png.

Si l'opération réussit, l'API renvoie une réponse vide.

Étapes suivantes

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

Envoyer des commentaires concernant…

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