Administra los ciclos de vida de los objetos

Ir a los conceptos

En esta página, se describe cómo habilitar la Administración del ciclo de vida de los objetos y se proporcionan ejemplos de políticas de ciclo de vida.

Configura la administración del ciclo de vida en un depósito

Habilita la administración del ciclo de vida

Para habilitar la administración del ciclo de vida de un depósito, haz lo siguiente:

Console

  1. Abre el navegador de Cloud Storage en Google Cloud Console.
    Abrir el navegador de Cloud Storage
  2. En la lista de depósitos, busca el depósito que deseas habilitar y haz clic en su nombre.

  3. Haz clic en la pestaña Ciclo de vida.

    Aparece la página de reglas del ciclo de vida.

  4. Haz clic en Agregar una regla.

  5. En la página que aparece, especifica una configuración.

    1. Selecciona la acción que debe realizarse cuando un objeto cumple las condiciones.

    2. Haz clic en Continuar.

    3. Selecciona las condiciones en las que se realiza una acción.

    4. Haz clic en Continuar.

    5. Haz clic en Crear.

Consulta Solución de problemas para obtener información detallada sobre las operaciones fallidas en el navegador de Cloud Storage.

gsutil

  1. Crea un archivo .json con las reglas de configuración del ciclo de vida que deseas aplicar. Consulta los ejemplos de configuración para ver archivos .json de muestra.

  2. Usa el comando lifecycle set para aplicar la configuración:

    gsutil lifecycle set LIFECYCLE_CONFIG_FILE gs://BUCKET_NAME

    Donde:

    • LIFECYCLE_CONFIG_FILE es el nombre del archivo que creaste en el paso 1.
    • BUCKET_NAME es el nombre del depósito correspondiente. Por ejemplo, my-bucket.

Muestras de código

C++

Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage para 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";
}

Go

Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage para Go.

import (
	"context"
	"fmt"
	"io"
	"time"

	"cloud.google.com/go/storage"
)

// enableBucketLifecycleManagement adds a lifecycle delete rule with the
// condition that the object is 100 days old.
func enableBucketLifecycleManagement(w io.Writer, bucketName string) error {
	// bucketName := "bucket-name"
	ctx := context.Background()
	client, err := storage.NewClient(ctx)
	if err != nil {
		return fmt.Errorf("storage.NewClient: %v", err)
	}
	defer client.Close()

	ctx, cancel := context.WithTimeout(ctx, time.Second*10)
	defer cancel()

	bucket := client.Bucket(bucketName)
	bucketAttrsToUpdate := storage.BucketAttrsToUpdate{
		Lifecycle: &storage.Lifecycle{
			Rules: []storage.LifecycleRule{
				{
					Action: storage.LifecycleAction{Type: "Delete"},
					Condition: storage.LifecycleCondition{
						AgeInDays: 100,
					},
				},
			},
		},
	}

	attrs, err := bucket.Update(ctx, bucketAttrsToUpdate)
	if err != nil {
		return fmt.Errorf("Bucket(%q).Update: %v", bucketName, err)
	}
	fmt.Fprintf(w, "Lifecycle management is enabled for bucket %v\n and the rules are:\n", bucketName)
	for _, rule := range attrs.Lifecycle.Rules {
		fmt.Fprintf(w, "Action: %v\n", rule.Action)
		fmt.Fprintf(w, "Condition: %v\n", rule.Condition)
	}

	return nil
}

Java

Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage para 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);
  }
}

Node.js

Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage para Node.js.

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

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

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

async function enableBucketLifecycleManagement() {
  const [metadata] = await storage.bucket(bucketName).addLifecycleRule({
    action: 'delete',
    condition: {age: 100},
  });

  console.log(
    `Lifecycle management is enabled for bucket ${bucketName} and the rules are:`
  );

  console.log(metadata.lifecycle.rule);
}

enableBucketLifecycleManagement().catch(console.error);

PHP

Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage para PHP.

use Google\Cloud\Storage\StorageClient;
use Google\Cloud\Storage\Bucket;

/**
 * Enable bucket lifecycle management.
 *
 * @param string $bucketName the name of your Cloud Storage bucket.
 */
function enable_bucket_lifecycle_management($bucketName)
{
    $storage = new StorageClient();
    $bucket = $storage->bucket($bucketName);

    $lifecycle = Bucket::lifecycle()
        ->addDeleteRule([
            'age' => 100
        ]);

    $bucket->update([
        'lifecycle' => $lifecycle
    ]);

    $lifecycle = $bucket->currentLifecycle();

    printf('Lifecycle management is enabled for bucket %s and the rules are:' . PHP_EOL, $bucketName);
    foreach ($lifecycle as $rule) {
        print_r($rule);
        print(PHP_EOL);
    }
}

Python

Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage para Python.

from google.cloud import storage

def enable_bucket_lifecycle_management(bucket_name):
    """Enable lifecycle management for a bucket"""
    # bucket_name = "my-bucket"

    storage_client = storage.Client()

    bucket = storage_client.get_bucket(bucket_name)
    rules = bucket.lifecycle_rules

    print("Lifecycle management rules for bucket {} are {}".format(bucket_name, list(rules)))
    bucket.add_lifecycle_delete_rule(age=2)
    bucket.patch()

    rules = bucket.lifecycle_rules
    print("Lifecycle management is enable for bucket {} and the rules are {}".format(bucket_name, list(rules)))

    return bucket

Ruby

Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage para Ruby.

# Enable lifecycle management for a bucket
# bucket_name = "Your Google Cloud Storage bucket name"

require "google/cloud/storage"

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

rules = bucket.lifecycle do |l|
  l.add_delete_rule age: 2
end

puts "Lifecycle management is enabled for bucket #{bucket_name} and the rules are #{rules}"

API de REST

API de JSON

  1. Obtén un token de autorización de acceso de OAuth 2.0 Playground. Configura Playground para usar tus propias credenciales de OAuth.
  2. Crea un archivo .json con las reglas de configuración del ciclo de vida que deseas aplicar. Consulta los ejemplos de configuración para ver archivos .json de muestra.

  3. Usa cURL para llamar a la API de JSON con una solicitud de depósito 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"

    Donde:

    • LIFECYCLE_CONFIG_FILE es el nombre del archivo que creaste en el paso 2.
    • OAUTH2_TOKEN es el token de acceso que generaste en el paso 1.
    • BUCKET_NAME es el nombre del depósito correspondiente. Por ejemplo, my-bucket.

API de XML

  1. Obtén un token de autorización de acceso de OAuth 2.0 Playground. Configura Playground para usar tus propias credenciales de OAuth.
  2. Crea un archivo .xml con las reglas de configuración del ciclo de vida que deseas aplicar. Consulta los ejemplos de configuración para ver archivos .xml de muestra.

  3. Usa cURL para llamar a la API de XML con una solicitud de depósito PUT:

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

    Donde:

    • XML_FILE es el nombre del archivo que creaste en el paso 2.
    • OAUTH2_TOKEN es el token de acceso que generaste en el paso 1.
    • BUCKET_NAME es el nombre del depósito correspondiente. Por ejemplo, my-bucket.

Inhabilita la administración del ciclo de vida

Para inhabilitar la administración del ciclo de vida de un depósito, haz lo siguiente:

Console

  1. Abre el navegador de Cloud Storage en Google Cloud Console.
    Abrir el navegador de Cloud Storage
  2. En la lista de depósitos, busca el depósito que deseas inhabilitar y haz clic en la entrada de la columna Reglas del ciclo de vida.

    Aparece la página de reglas del ciclo de vida.

  3. Haz clic en Borrar todo.

  4. En la ventana de confirmación que aparece, haz clic en Confirmar.

Consulta Solución de problemas para obtener información detallada sobre las operaciones fallidas en el navegador de Cloud Storage.

gsutil

  1. Crea un archivo .json con una configuración de ciclo de vida vacía:

    {
      "lifecycle": {
        "rule": []
      }
    }
  2. Usa el comando lifecycle set:

    gsutil lifecycle set LIFECYCLE_CONFIG_FILE gs://BUCKET_NAME

    Donde:

    • LIFECYCLE_CONFIG_FILE es el nombre del archivo que creaste en el paso 1.
    • BUCKET_NAME es el nombre del depósito correspondiente. Por ejemplo, my-bucket.

Muestras de código

C++

Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage para C++.

namespace gcs = google::cloud::storage;
using ::google::cloud::StatusOr;
[](gcs::Client client, std::string const& bucket_name) {
  StatusOr<gcs::BucketMetadata> updated_metadata = client.PatchBucket(
      bucket_name, gcs::BucketMetadataPatchBuilder().ResetLifecycle());

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

  std::cout << "Successfully disabled bucket lifecycle management for bucket "
            << updated_metadata->name() << ".\n";
}

Go

Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage para Go.

import (
	"context"
	"fmt"
	"io"
	"time"

	"cloud.google.com/go/storage"
)

// disableBucketLifecycleManagement removes all existing lifecycle rules
// from the bucket.
func disableBucketLifecycleManagement(w io.Writer, bucketName string) error {
	// bucketName := "bucket-name"
	ctx := context.Background()
	client, err := storage.NewClient(ctx)
	if err != nil {
		return fmt.Errorf("storage.NewClient: %v", err)
	}
	defer client.Close()

	ctx, cancel := context.WithTimeout(ctx, time.Second*10)
	defer cancel()

	bucket := client.Bucket(bucketName)
	bucketAttrsToUpdate := storage.BucketAttrsToUpdate{
		Lifecycle: &storage.Lifecycle{},
	}

	_, err = bucket.Update(ctx, bucketAttrsToUpdate)
	if err != nil {
		return fmt.Errorf("Bucket(%q).Update: %v", bucketName, err)
	}
	fmt.Fprintf(w, "Lifecycle management is disabled for bucket %v.\n", bucketName)

	return nil
}

Java

Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage para Java.

import com.google.cloud.storage.Bucket;
import com.google.cloud.storage.Storage;
import com.google.cloud.storage.StorageOptions;

public class DisableLifecycleManagement {
  public static void disableLifecycleManagement(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);
    bucket.toBuilder().deleteLifecycleRules().build().update();

    System.out.println("Lifecycle management was disabled for bucket " + bucketName);
  }
}

Node.js

Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage para Node.js.

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

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

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

async function disableBucketLifecycleManagement() {
  await storage.bucket(bucketName).setMetadata({lifecycle: null});

  console.log(`Lifecycle management is disabled for bucket ${bucketName}.`);
}

disableBucketLifecycleManagement().catch(console.error);

PHP

Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage para PHP.

use Google\Cloud\Storage\StorageClient;
use Google\Cloud\Storage\Bucket;

/**
 * Disable bucket lifecycle management.
 *
 * @param string $bucketName the name of your Cloud Storage bucket.
 */
function disable_bucket_lifecycle_management($bucketName)
{
    $storage = new StorageClient();
    $bucket = $storage->bucket($bucketName);

    $bucket->update([
        'lifecycle' => null
    ]);

    printf('Lifecycle management is disabled for bucket %s.' . PHP_EOL, $bucketName);
}

Python

Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage para Python.

from google.cloud import storage

def disable_bucket_lifecycle_management(bucket_name):
    """Disable lifecycle management for a bucket"""
    # bucket_name = "my-bucket"

    storage_client = storage.Client()

    bucket = storage_client.get_bucket(bucket_name)
    bucket.clear_lifecyle_rules()
    bucket.patch()
    rules = bucket.lifecycle_rules

    print("Lifecycle management is disable for bucket {} and the rules are {}".format(bucket_name, list(rules)))
    return bucket

Ruby

Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage para Ruby.

# Disable lifecycle management for a bucket
# bucket_name = "Your Google Cloud Storage bucket name"

require "google/cloud/storage"

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

bucket.lifecycle do |l|
  l.clear
end

puts "Lifecycle management is disabled for bucket #{bucket_name}"

API de REST

API de JSON

  1. Obtén un token de autorización de acceso de OAuth 2.0 Playground. Configura Playground para usar tus propias credenciales de OAuth.
  2. Crea un archivo .json con una configuración de ciclo de vida vacía:

    {
      "lifecycle": {
        "rule": []
      }
    }
  3. Usa cURL para llamar a la API de JSON con una solicitud de depósito 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"

    Donde:

    • LIFECYCLE_CONFIG_FILE es el nombre del archivo que creaste en el paso 2.
    • OAUTH2_TOKEN es el token de acceso que generaste en el paso 1.
    • BUCKET_NAME es el nombre del depósito correspondiente. Por ejemplo, my-bucket.

API de XML

  1. Obtén un token de autorización de acceso de OAuth 2.0 Playground. Configura Playground para usar tus propias credenciales de OAuth.
  2. Crea un archivo .xml con una configuración de ciclo de vida vacía:

    <LifecycleConfiguration/>
  3. Usa cURL para llamar a la API de XML con una solicitud de depósito PUT:

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

    Donde:

    • XML_FILE es el nombre del archivo que creaste en el paso 2.
    • OAUTH2_TOKEN es el token de acceso que generaste en el paso 1.
    • BUCKET_NAME es el nombre del depósito correspondiente. Por ejemplo, my-bucket.

Comprueba la configuración del ciclo de vida

Para comprobar la configuración del ciclo de vida en un depósito, haz lo siguiente:

Console

  1. Abre el navegador de Cloud Storage en Google Cloud Console.
    Abrir el navegador de Cloud Storage
  2. En la lista de depósitos, el estado del ciclo de vida de cada depósito se encuentra en la columna Ciclo de vida.

    Puedes hacer clic en este estado para agregar, ver, editar y borrar reglas.

Consulta Solución de problemas para obtener información detallada sobre las operaciones fallidas en el navegador de Cloud Storage.

gsutil

  1. Usa el comando lifecycle get:

    gsutil lifecycle get gs://BUCKET_NAME

    En el ejemplo anterior, BUCKET_NAME es el nombre del depósito correspondiente. Por ejemplo, my-bucket.

API de REST

API de JSON

  1. Obtén un token de autorización de acceso de OAuth 2.0 Playground. Configura Playground para usar tus propias credenciales de OAuth.
  2. Usa cURL para llamar a la API de JSON con una solicitud de depósito GET:

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

    Donde:

    • OAUTH2_TOKEN es el token de acceso que generaste en el paso 1.
    • BUCKET_NAME es el nombre del depósito correspondiente. Por ejemplo, my-bucket.

API de XML

  1. Obtén un token de autorización de acceso de OAuth 2.0 Playground. Configura Playground para usar tus propias credenciales de OAuth.
  2. Usa cURL para llamar a la API de XML con una solicitud de depósito GET:

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

    Donde:

    • OAUTH2_TOKEN es el token de acceso que generaste en el paso 1.
    • BUCKET_NAME es el nombre del depósito correspondiente. Por ejemplo, my-bucket.

Ejemplos de configuración del ciclo de vida de los objetos

En los siguientes ejemplos, se muestran parámetros de configuración del ciclo de vida específicos que realizan acciones del ciclo de vida cuando se cumplen las condiciones del ciclo de vida comunes.

Borra un objeto

La siguiente configuración del ciclo de vida define tres reglas. Ten en cuenta que la segunda y tercera regla son aplicables solo cuando se usa el control de versiones de objetos en el depósito:

  1. Borra versiones publicadas de objetos con más de 30 días de antigüedad.

    • Si el depósito usa el control de versiones de objetos, esos objetos se vuelven no actuales y están sujetos a las otras dos reglas.

    • Si el depósito no usa el control de versiones de objetos, esos objetos se borran de forma permanente y no se pueden recuperar.

  2. Borra las versiones no actuales de objetos si hay 2 versiones más recientes del objeto en el depósito. Los objetos sujetos a esta regla se borran de manera permanente y no se pueden recuperar.

  3. Borra versiones no actuales de objetos con más de 35 días de antigüedad. Los objetos sujetos a esta regla se borran de manera permanente y no se pueden recuperar.

El efecto de la combinación de estas tres reglas es que los objetos están sujetos a la eliminación permanente después de un máximo de 35 días en el depósito: 30 días como versión publicada y 5 días como una versión no actual. En el caso de las versiones publicadas de objetos que fueron reemplazadas o borradas fuera del alcance de esta configuración, están sujetas a la eliminación permanente en menor tiempo: 5 días a partir de la fecha en que se volvieron no actuales o cuando haya más de una versión más reciente del objeto en el depósito.

Console

En esta configuración, se usan las instrucciones que se encuentran en la sección habilitar.

  1. Sigue estos pasos para borrar versiones publicadas de objetos con más de 30 días de antigüedad:

    1. Selecciona la acción Borrar objeto.
    2. Selecciona la condición antigüedad y, luego, ingresa un valor de 30.
    3. Selecciona la condición Estado en vivo y elige la opción Activo.
  2. Para borrar versiones no actuales de objetos si hay 2 versiones más recientes, haz lo siguiente:

    1. Selecciona la acción Borrar objeto.
    2. Selecciona la condición Cantidad de versiones más recientes y, luego, ingresa un valor de 2.
  3. Para borrar versiones no actuales de objetos con más de 35 días de antigüedad, sigue estos pasos:

    1. Selecciona la acción Borrar objeto.
    2. Selecciona la condición Antigüedad y, luego, ingresa un valor de 35.
    3. Selecciona la condición Estado en vivo y elige la opción No actual.

gsutil

La siguiente configuración del ciclo de vida se puede aplicar a un depósito. Para ello, habilita la administración del ciclo de vida.

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

Si quieres obtener el formato generalizado de un archivo de configuración del ciclo de vida, consulta la representación de recursos de depósitos para JSON.

API de REST

API de JSON

La siguiente configuración del ciclo de vida se puede aplicar a un depósito. Para ello, habilita la administración del ciclo de vida.

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

Si quieres obtener el formato generalizado de un archivo de configuración del ciclo de vida, consulta la representación de recursos de depósitos para JSON.

API de XML

La siguiente configuración del ciclo de vida se puede aplicar a un depósito. Para ello, habilita la administración del ciclo de vida.

<?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>
            <NumberOfNewerVersions>2</Age>
        </Condition>
    </Rule>
    <Rule>
        <Action>
            <Delete/>
        </Action>
        <Condition>
            <IsLive>false</IsLive>
            <Age>35</Age>
        </Condition>
    </Rule>
</LifecycleConfiguration>

Si quieres obtener el formato generalizado de un archivo de configuración del ciclo de vida, consulta el formato de configuración del ciclo de vida para XML.

Cambia la clase de almacenamiento de un objeto

La siguiente configuración del ciclo de vida define dos reglas:

  1. Cambia la clase de almacenamiento de un objeto a Nearline Storage si su antigüedad es mayor a 365 días (un año) y su clase de almacenamiento actual es Standard Storage, Multi-Regional Storage o almacenamiento de disponibilidad reducida duradera (DRA).
  2. Cambia la clase de almacenamiento de un objeto a Coldline Storage si su antigüedad es superior a 1,095 días (tres años) y su clase de almacenamiento actual es Nearline Storage.

Console

En esta configuración, se usan las instrucciones que se encuentran en la sección habilitar.

  1. Para mover objetos a Cloud Storage Nearline 365 días después de su creación, sigue estos pasos:

    1. Selecciona la acción Establecer la clase de almacenamiento en Nearline.
    2. Selecciona la condición Antigüedad y, luego, ingresa un valor de 365.
    3. Selecciona la condición La clase de almacenamiento coincide con… y elige las opciones Estándar, Multi-regional y Durable Reduced Availability.
  2. Para mover objetos a Cloud Storage Coldline 1,095 días después de su creación, sigue estos pasos:

    1. Selecciona la acción Establecer la clase de almacenamiento en Coldline.
    2. Selecciona la condición Antigüedad y, luego, ingresa un valor de 1,095.
    3. Selecciona la condición La clase de almacenamiento coincide con… y elige la opción Nearline.

gsutil

La siguiente configuración del ciclo de vida se puede aplicar a un depósito. Para ello, habilita la administración del ciclo de vida.

{
"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"]
    }
  }
]
}
}

Si quieres obtener el formato generalizado de un archivo de configuración del ciclo de vida, consulta la representación de recursos de depósitos para JSON.

API de REST

API de JSON

La siguiente configuración del ciclo de vida se puede aplicar a un depósito. Para ello, habilita la administración del ciclo de vida.

{
"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"]
    }
  }
]
}
}

Si quieres obtener el formato generalizado de un archivo de configuración del ciclo de vida, consulta la representación de recursos de depósitos para JSON.

API de XML

La siguiente configuración del ciclo de vida se puede aplicar a un depósito. Para ello, habilita la administración del ciclo de vida.

<?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>

Si quieres obtener el formato generalizado de un archivo de configuración del ciclo de vida, consulta el formato de configuración del ciclo de vida para XML.

Qué sigue