Gérer les cycles de vie des objets

Accéder aux concepts

Cette page explique comment activer la gestion du cycle de vie des objets et présente des exemples de règles de cycle de vie.

Configurer la gestion du cycle de vie sur un bucket

Activer la gestion du cycle de vie

Pour activer la gestion du cycle de vie d'un bucket, procédez comme suit :

Console

  1. Ouvrez le navigateur Cloud Storage dans Google Cloud Console.
    Ouvrir le navigateur Cloud Storage
  2. Dans la liste de buckets, recherchez le bucket à activer, puis cliquez sur Aucun dans la colonne Cycle de vie.

    La page des règles de cycle de vie s'affiche.

  3. Cliquez sur Ajouter une règle.

  4. Dans la page qui s'affiche, spécifiez une configuration.

    1. Sélectionnez les conditions dans lesquelles une action est effectuée.

    2. Cliquez sur Continuer.

    3. Sélectionnez l'action à effectuer lorsqu'un objet remplit les conditions.

    4. Cliquez sur Continuer.

    5. Cliquez sur Save.

Consultez la page Dépannage pour obtenir des informations détaillées sur les erreurs liées aux opérations ayant échoué dans le navigateur Cloud Storage.

gsutil

  1. Créez un fichier .json en incluant les règles de configuration du cycle de vie que vous souhaitez appliquer. Consultez ces exemples de configuration pour obtenir des exemples de fichiers .json.

  2. Utilisez la commande lifecycle set pour appliquer la configuration :

    gsutil lifecycle set [LIFECYCLE_CONFIG_FILE] gs://[BUCKET_NAME]

    Où :

    • [LIFECYCLE_CONFIG_FILE] correspond au nom du fichier que vous avez créé à l'étape 1.
    • [BUCKET_NAME] correspond au 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) {
  gcs::BucketLifecycle bucket_lifecycle_rules = gcs::BucketLifecycle{
      {gcs::LifecycleRule(gcs::LifecycleRule::ConditionConjunction(
                              gcs::LifecycleRule::MaxAge(30),
                              gcs::LifecycleRule::IsLive(true)),
                          gcs::LifecycleRule::Delete())}};

  StatusOr<gcs::BucketMetadata> updated_metadata = client.PatchBucket(
      bucket_name,
      gcs::BucketMetadataPatchBuilder().SetLifecycle(bucket_lifecycle_rules));

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

  if (!updated_metadata->has_lifecycle() ||
      updated_metadata->lifecycle().rule.empty()) {
    std::cout << "Bucket lifecycle management is not enabled for bucket "
              << updated_metadata->name() << ".\n";
    return;
  }
  std::cout << "Successfully enabled bucket lifecycle management for bucket "
            << updated_metadata->name() << ".\n";
  std::cout << "The bucket lifecycle rules are";
  for (auto const& kv : updated_metadata->lifecycle().rule) {
    std::cout << "\n " << kv.condition() << ", " << kv.action();
  }
  std::cout << "\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.BucketInfo.LifecycleRule;
import com.google.cloud.storage.Storage;
import com.google.cloud.storage.StorageOptions;
import com.google.common.collect.ImmutableList;

public class EnableLifecycleManagement {
  public static void enableLifecycleManagement(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);

    // See the LifecycleRule documentation for additional info on what you can do with lifecycle
    // management rules. This one deletes objects that are over 100 days old.
    // https://googleapis.dev/java/google-cloud-clients/latest/com/google/cloud/storage/BucketInfo.LifecycleRule.html
    bucket
        .toBuilder()
        .setLifecycleRules(
            ImmutableList.of(
                new LifecycleRule(
                    LifecycleRule.LifecycleAction.newDeleteAction(),
                    LifecycleRule.LifecycleCondition.newBuilder().setAge(100).build())))
        .build()
        .update();

    System.out.println("Lifecycle management was enabled and configured 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 en incluant les règles de configuration du cycle de vie que vous souhaitez appliquer. Consultez ces exemples de configuration pour obtenir des exemples de fichiers .json.

  3. Exécutez cURL pour appeler l'API JSON avec une requête de bucket PATCH :

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

    Où :

    • [LIFECYCLE_CONFIG_FILE] correspond au nom du 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 en incluant les règles de configuration du cycle de vie que vous souhaitez appliquer. Consultez ces exemples de configuration pour obtenir des exemples de fichiers .xml.

  3. Utilisez cURL pour appeler l'API XML avec une requête de bucket PUT :

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

    Où :

    • [XML_FILE] correspond au nom du 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.

Désactiver la gestion du cycle de vie

Pour désactiver la gestion du cycle de vie d'un bucket, procédez comme suit :

Console

  1. Ouvrez le navigateur Cloud Storage dans Google Cloud Console.
    Ouvrir le navigateur Cloud Storage
  2. Dans la liste de buckets, recherchez le bucket que vous souhaitez désactiver, puis cliquez sur Activé dans la colonne Cycle de vie.

    La page des règles de cycle de vie s'affiche.

  3. Cliquez sur Supprimer tout.

  4. Dans la fenêtre de confirmation qui apparaît, cliquez sur Supprimer.

Consultez la page Dépannage pour obtenir des informations détaillées sur les erreurs liées aux opérations ayant échoué dans le navigateur Cloud Storage.

gsutil

  1. Créez un fichier .json contenant une configuration de cycle de vie vide :

    {
      "lifecycle": {
        "rule": []
      }
    }
  2. Exécutez la commande lifecycle set :

    gsutil lifecycle set [LIFECYCLE_CONFIG_FILE] gs://[BUCKET_NAME]

    Où :

    • [LIFECYCLE_CONFIG_FILE] correspond au nom du fichier que vous avez créé à l'étape 1.
    • [BUCKET_NAME] correspond au nom du bucket concerné. Exemple : my-bucket.

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 une configuration de cycle de vie vide :

    {
      "lifecycle": {
        "rule": []
      }
    }
  3. Exécutez cURL pour appeler l'API JSON avec une requête de bucket PATCH :

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

    Où :

    • [LIFECYCLE_CONFIG_FILE] correspond au nom du 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 une configuration de cycle de vie vide :

    <LifecycleConfiguration/>
  3. Utilisez cURL pour appeler l'API XML avec une requête de bucket PUT :

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

    Où :

    • [XML_FILE] correspond au nom du 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.

Vérifier la configuration du cycle de vie

Pour vérifier la configuration du cycle de vie définie sur un bucket, procédez comme suit :

Console

  1. Ouvrez le navigateur Cloud Storage dans Google Cloud Console.
    Ouvrir le navigateur Cloud Storage
  2. Dans la liste de buckets, l'état du cycle de vie de chaque bucket se trouve dans la colonne Cycle de vie.

    Cliquez sur cet état pour ajouter, afficher, modifier et supprimer des règles.

Consultez la page Dépannage pour obtenir des informations détaillées sur les erreurs liées aux opérations ayant échoué dans le navigateur Cloud Storage.

gsutil

  1. Exécutez la commande lifecycle get :

    gsutil lifecycle get gs://[BUCKET_NAME]

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

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=lifecycle"

    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. Utilisez cURL pour appeler l'API XML avec une requête de bucket GET :

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

    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.

Exemples de configuration du cycle de vie des objets

Les exemples suivants montrent des configurations de cycle de vie spécifiques qui effectuent des opérations du cycle de vie lorsque certaines conditions du cycle de vie courantes sont remplies.

Supprimer un objet

La configuration de cycle de vie suivante définit deux règles :

  1. Supprimez les versions actives des objets datant de plus de 30 jours. Notez que tous vos objets sont considérés comme actifs, sauf si vous utilisez lagestion des versions d'objets.
  2. Supprimez les versions obsolètes des objets datant de plus de 10 jours. Notez que cette règle n'est appliquée qu'aux buckets pour lesquels vous avez, ou aviez précédemment activé la gestion des versions d'objets.

Console

La règle suivante supprime les versions actives des objets datant de plus de 30 jours :

Supprimer les objets actifs de plus de 30 jours.

La règle suivante supprime les versions obsolètes des objets datant de plus de 10 jours :

Supprimer les objets obsolètes datant de plus de 10 jours.

gsutil

La configuration de cycle de vie ci-dessous peut être appliquée à un bucket en activant la gestion du cycle de vie.

{
"lifecycle": {
  "rule": [
  {
    "action": {"type": "Delete"},
    "condition": {
      "age": 30,
      "isLive": true
    }
  },
  {
    "action": {"type": "Delete"},
    "condition": {
      "age": 10,
      "isLive": false
    }
  }
]
}
}

Pour connaître le format généralisé d'un fichier de configuration de cycle de vie, consultez la page représentation des ressources de bucket pour JSON.

API REST

API JSON

La configuration de cycle de vie ci-dessous peut être appliquée à un bucket en activant la gestion du cycle de vie.

{
"lifecycle": {
  "rule": [
  {
    "action": {"type": "Delete"},
    "condition": {
      "age": 30,
      "isLive": true
    }
  },
  {
    "action": {"type": "Delete"},
    "condition": {
      "age": 10,
      "isLive": false
    }
  }
]
}
}

Pour connaître le format généralisé d'un fichier de configuration de cycle de vie, consultez la page représentation des ressources de bucket pour JSON.

API XML

La configuration de cycle de vie ci-dessous peut être appliquée à un bucket en activant la gestion du cycle de vie.

<?xml version="1.0" encoding="UTF-8" ?>
<LifecycleConfiguration>
    <Rule>
        <Action>
            <Delete/>
        </Action>
        <Condition>
            <IsLive>true</IsLive>
            <Age>30</Age>
        </Condition>
    </Rule>
    <Rule>
        <Action>
            <Delete/>
        </Action>
        <Condition>
            <IsLive>false</IsLive>
            <Age>10</Age>
        </Condition>
    </Rule>
</LifecycleConfiguration>

Pour connaître le format général d'un fichier de configuration de cycle de vie, consultez la page relative au format de configuration de cycle de vie pour XML.

Modifier la classe de stockage d'un objet

La configuration de cycle de vie suivante définit deux règles :

  1. Changer la classe de stockage d'un objet pour Stockage Nearline si son âge est supérieur à 365 jours (un an) et si sa classe de stockage actuelle est définie sur Stockage standard, Stockage multirégional ou Stockage DRA.
  2. Changer la classe de stockage d'un objet pour Stockage Coldline si son âge est supérieur à 1 095 jours (trois ans) et si sa classe de stockage actuelle est définie sur Stockage Nearline.

Console

La règle suivante déplace les objets vers Nearline 365 jours après la création de l'objet :

Définir les objets sur un stockage Nearline après 365 jours.

La règle suivante déplace les objets vers Coldline 1 095 jours après la création de l'objet :

Définir des objets sur un stockage Coldline après 1 095 jours.

gsutil

La configuration de cycle de vie ci-dessous peut être appliquée à un bucket en activant la gestion du cycle de vie.

{
"lifecycle": {
  "rule": [
  {
    "action": {
      "type": "SetStorageClass",
      "storageClass": "NEARLINE"
    },
    "condition": {
      "age": 365,
      "matchesStorageClass": ["MULTI_REGIONAL", "STANDARD", "DURABLE_REDUCED_AVAILABILITY"]
    }
  },
  {
    "action": {
      "type": "SetStorageClass",
      "storageClass": "COLDLINE"
    },
    "condition": {
      "age": 1095,
      "matchesStorageClass": ["NEARLINE"]
    }
  }
]
}
}

Pour connaître le format généralisé d'un fichier de configuration de cycle de vie, consultez la page représentation des ressources de bucket pour JSON.

API REST

API JSON

La configuration de cycle de vie ci-dessous peut être appliquée à un bucket en activant la gestion du cycle de vie.

{
"lifecycle": {
  "rule": [
  {
    "action": {
      "type": "SetStorageClass",
      "storageClass": "NEARLINE"
    },
    "condition": {
      "age": 365,
      "matchesStorageClass": ["MULTI_REGIONAL", "STANDARD", "DURABLE_REDUCED_AVAILABILITY"]
    }
  },
  {
    "action": {
      "type": "SetStorageClass",
      "storageClass": "COLDLINE"
    },
    "condition": {
      "age": 1095,
      "matchesStorageClass": ["NEARLINE"]
    }
  }
]
}
}

Pour connaître le format généralisé d'un fichier de configuration de cycle de vie, consultez la page représentation des ressources de bucket pour JSON.

API XML

La configuration de cycle de vie ci-dessous peut être appliquée à un bucket en activant la gestion du cycle de vie.

<?xml version="1.0" encoding="UTF-8" ?>
<LifecycleConfiguration>
    <Rule>
        <Action>
            <SetStorageClass>NEARLINE</SetStorageClass>
        </Action>
        <Condition>
            <Age>365</Age>
            <MatchesStorageClass>MULTI_REGIONAL</MatchesStorageClass>
            <MatchesStorageClass>STANDARD</MatchesStorageClass>
            <MatchesStorageClass>DURABLE_REDUCED_AVAILABILITY</MatchesStorageClass>
        </Condition>
    </Rule>
    <Rule>
        <Action>
            <SetStorageClass>COLDLINE</SetStorageClass>
        </Action>
        <Condition>
            <Age>1095</Age>
            <MatchesStorageClass>NEARLINE</MatchesStorageClass>
        </Condition>
    </Rule>
</LifecycleConfiguration>

Pour connaître le format général d'un fichier de configuration de cycle de vie, consultez la section sur le format de configuration de cycle de vie pour XML.

Étape suivante