Définir une règle de cycle de vie des objets pour les buckets de stockage

Les règles de cycle de vie des objets dans Google Distributed Cloud (GDC) sous air gap vous permettent d'automatiser la conservation des données et leur expiration dans vos buckets de stockage. Vous pouvez définir des règles d'âge, de préfixe et de tag pour supprimer des objets sans version, ou pour effectuer la transition et l'expiration des versions sans nettoyage manuel.

Avant de commencer

Les buckets de stockage sont des ressources limitées à un projet spécifique. Le projet agit comme un conteneur, regroupant vos buckets et permettant de les gérer via le serveur de l'API Management. Avant de pouvoir effectuer les opérations décrites sur cette page, vous devez créer un projet ou en sélectionner un existant pour lequel vous disposez des autorisations suffisantes.

Rôles IAM requis

Contactez l'administrateur de projet IAM pour demander les rôles suivants dans l'espace de noms de votre projet :

  • Administrateur de buckets de projet (project-bucket-admin) : créer, mettre à jour et supprimer des buckets de stockage.
  • Lecteur d'objets de bucket de projet (project-bucket-object-viewer) : permet d'afficher et de vérifier les détails des buckets et des objets de stockage.

Pour en savoir plus, consultez Accorder l'accès à un bucket.

Préparer votre environnement

Pour exécuter des commandes sur le serveur d'API Management ou le serveur d'API global, procédez comme suit :

  1. Connectez-vous et générez le fichier kubeconfig pour le serveur d'API de gestion zonale si vous n'en avez pas.
  2. Pour les buckets birégionaux, procédez comme suit :
    • Vérifiez auprès de votre opérateur d'infrastructure (IO) que la ressource personnalisée BucketLocationConfig a été créée pour vos zones associées.
    • Générez le fichier kubeconfig pour le serveur d'API global.

Définir une règle de cycle de vie des objets sur un bucket

Vous pouvez utiliser une règle de cycle de vie des objets pour gérer automatiquement les objets de vos buckets. Cela vous aide à stocker les données plus efficacement tout au long de leur cycle de vie. Une configuration de cycle de vie est une liste de règles permettant de faire expirer un groupe d'objets en fonction de certains critères de correspondance.

Vous pouvez créer un bucket avec ou sans règle de cycle de vie des objets. Vous pouvez appliquer une nouvelle règle de cycle de vie, mettre à jour une règle existante ou supprimer une règle existante après la création du bucket.

Pour les buckets sans gestion des versions, l'expiration signifie la suppression définitive de l'objet de manière asynchrone.

Pour les buckets avec gestion des versions, si la version actuelle de l'objet n'est pas un marqueur de suppression, l'expiration fait passer la version actuelle à l'état archivé, puis ajoute un marqueur de suppression à la version actuelle.

Pour définir et modifier la règle de cycle de vie des objets, mettez à jour le champ Bucket.spec.bucketPolicy.lifecyclePolicy.

CLI

Voici quelques exemples de ressources de bucket avec différentes règles de cycle de vie des objets configurées :

apiVersion: object.gdc.goog/v1
kind: Bucket
metadata:
  name: BUCKET_NAME
  namespace: NAMESPACE_NAME
spec:
  description: "Bucket with lifecycle rule to expire all objects after 365 days"
  storageClass: Standard
  bucketPolicy:
    lifecyclePolicy:
      enable: true
      lifecycleRules:
      - expiration:
          days: 365
        id: expire-all-after-365-days
        status: Enabled
---
apiVersion: object.gdc.goog/v1
kind: Bucket
metadata:
  name: BUCKET_NAME
  namespace: NAMESPACE_NAME
spec:
  description: "Bucket with lifecycle rule to expire objects in the logs/ directory after 30 days"
  storageClass: Standard
  bucketPolicy:
    lifecyclePolicy:
      enable: true
      lifecycleRules:
      - expiration:
          days: 30
        id: expire-logs-dir-after-30-days
        status: Enabled
        filter:
          prefixFilter: "logs/"
---
apiVersion: object.gdc.goog/v1
kind: Bucket
metadata:
  name: BUCKET_NAME
  namespace: NAMESPACE_NAME
spec:
  description: "Bucket with lifecycle rule to expire objects having specific tag after 30 days"
  storageClass: Standard
  bucketPolicy:
    lifecyclePolicy:
      enable: true
      lifecycleRules:
      - expiration:
          days: 30
        id: expire-tagged-objects-after-30-days
        status: Enabled
        filter:
          tagFilters:
          - key: environment
            value: dev
---
apiVersion: object.gdc.goog/v1
kind: Bucket
metadata:
  name: BUCKET_NAME
  namespace: NAMESPACE_NAME
spec:
  description: "Bucket with lifecycle rule to expire noncurrent versions after 90 days"
  storageClass: Standard
  bucketPolicy:
    lifecyclePolicy:
      enable: true
      lifecycleRules:
      - noncurrentExpiration:
          noncurrentDays: 90
        id: expire-noncurrent-after-90-days
        status: Enabled
---
apiVersion: object.gdc.goog/v1
kind: Bucket
metadata:
  name: BUCKET_NAME
  namespace: NAMESPACE_NAME
spec:
  description: "Bucket with lifecycle rule to expire objects on a specific date"
  storageClass: Standard
  bucketPolicy:
    lifecyclePolicy:
      enable: true
      lifecycleRules:
      - expiration:
          date: "2027-01-01T00:00:00Z"
        id: expire-on-specific-date
        status: Enabled
---
apiVersion: object.gdc.goog/v1
kind: Bucket
metadata:
  name: BUCKET_NAME
  namespace: NAMESPACE_NAME
spec:
  description: "Bucket with multiple lifecycle rules and advanced filters"
  storageClass: Standard
  bucketPolicy:
    lifecyclePolicy:
      enable: true
      lifecycleRules:
      # Rule 1: Expire objects in 'tmp/' directory AND tagged with 'status=ready' after 7 days
      - expiration:
          days: 7
        id: expire-ready-tmp-objects
        status: Enabled
        filter:
          prefixFilter: "tmp/"
          tagFilters:
          - key: status
            value: ready
      # Rule 2: Expire all objects in 'logs/' directory after 90 days
      - expiration:
          days: 90
        id: expire-logs-after-90-days
        status: Enabled
        filter:
          prefixFilter: "logs/"

Toute mise à jour de la règle de cycle de vie s'applique aux objets existants et aux objets importés après la mise à jour.

Lorsque le verrouillage d'objets est également configuré sur le bucket, les objets sont protégés contre l'expiration avant la fin de la période de conservation.