Usa objetos borrados de forma no definitiva

Descripción general Configuración

En esta página, se describe cómo enumerar, acceder y restablecer objetos borrados de forma no definitiva.

Antes de comenzar

Para administrar y restablecer objetos borrados de forma no definitiva en un bucket, asegúrate de tener el rol de IAM de administrador de almacenamiento (roles/storage.admin) en el bucket o en el proyecto que contiene el bucket. Este rol predefinido incluye los permisos necesarios para administrar y restablecer la eliminación no definitiva en un bucket.

Para ver los permisos exactos que son necesarios, expande la sección Permisos necesarios:

Permisos necesarios

  • storage.buckets.get
  • storage.buckets.update
  • storage.buckets.list
    • Este permiso es necesario si planeas usar la consola de Google Cloud para ejecutar las instrucciones en esta página.
  • storage.objects.restore
  • storage.objects.create
  • storage.objects.delete
  • storage.buckets.restore
    • Este permiso es necesario si deseas restablecer de forma masiva los objetos borrados de forma no definitiva en un bucket.
  • storage.bucketOperations.*
    • Este permiso es necesario para operaciones de larga duración.

Para obtener más información sobre cómo otorgar roles en los buckets, consulta Usa IAM con buckets. Para obtener información sobre cómo otorgar roles en proyectos, consulta Administra el acceso a los proyectos.

Enumera todos los objetos borrados de forma no definitiva en un bucket

Puedes enumerar todos los objetos borrados de forma no definitiva en un bucket.

Console

  1. En la consola de Google Cloud, ve a la página Buckets de Cloud Storage.

    Ir a Buckets

  2. En la lista de buckets, haz clic en el nombre del bucket del que deseas ver los objetos borrados de forma no definitiva. Se abrirá la página Detalles del bucket con la pestaña Objetos elegidos.

  3. En la lista Mostrar, selecciona Solo objetos borrados de forma no definitiva. Se muestra una lista de objetos borrados de forma no definitiva.

Línea de comandos

Para mostrar una lista de todos los objetos borrados de forma no definitiva en un bucket, usa el comando gcloud storage ls con las marcas --soft-deleted y --recursive:

  gcloud storage ls gs://BUCKET_NAME --soft-deleted --recursive

Reemplaza lo siguiente:

  • BUCKET_NAME: el nombre del bucket. Por ejemplo, my-bucket.

APIs 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 credenciales de OAuth. Para obtener instrucciones, consulta Autenticación de la API.
  2. Usa cURL para llamar a la API de JSON con una solicitud de objeto GET:

    curl -X GET \
      -H "Authorization: Bearer OAUTH2_TOKEN" \
      -H "Content-Type: application/json" \
      "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/o?softDeleted=true"

    Aquí:

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

Visualiza todas las versiones borradas de forma no definitiva de un objeto

Puedes ver todas las versiones borradas de forma no definitiva de un objeto específico en tu bucket.

Console

  1. En la consola de Google Cloud, ve a la página Buckets de Cloud Storage.

    Ir a Buckets

  2. En la lista de buckets, haz clic en el nombre del bucket que contiene el objeto del que deseas ver las versiones borradas de forma no definitiva. Se abrirá la página Detalles del bucket con la pestaña Objetos elegidos.

  3. Haz clic en el objeto del que deseas ver todas las versiones borradas de forma no definitiva. Aparecerá la página Detalles del objeto.

  4. Haz clic en la pestaña Historial de versiones.

  5. En la lista Mostrar, selecciona Solo objetos borrados de forma no definitiva. Se muestra una lista de todas las versiones borradas de forma no definitiva de ese objeto.

Línea de comandos

Para mostrar una lista de todas las versiones borradas de forma no definitiva de un objeto en un bucket, usa el comando gcloud storage ls:

  gcloud storage ls gs://BUCKET_NAME/OBJECT_NAME --soft-deleted

Reemplaza lo siguiente:

  • BUCKET_NAME: el nombre del bucket. Por ejemplo, my-bucket.
  • OBJECT_NAME: el nombre del objeto del que deseas ver todas las versiones.

APIs 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 credenciales de OAuth. Para obtener instrucciones, consulta Autenticación de la API.
  2. Usa cURL para llamar a la API de JSON con una solicitud de objeto GET:

    curl -X GET \
      -H "Authorization: Bearer OAUTH2_TOKEN" \
      -H "Content-Type: application/json" \
      "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/o?softDeleted=true"

    Aquí:

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

Restablece un objeto borrado de forma no definitiva

Puedes restablecer una versión específica de un objeto borrado de forma no definitiva en tu bucket.

Console

  1. En la consola de Google Cloud, ve a la página Buckets de Cloud Storage.

    Ir a Buckets

  2. En la lista de buckets, haz clic en el nombre del bucket que contiene los objetos borrados de forma no definitiva que deseas restablecer. Se abrirá la página Detalles del bucket con la pestaña Objetos elegidos.

  3. En la lista Mostrar, selecciona Solo objetos borrados de forma no definitiva.

  4. Navega hasta el objeto, que puede estar en una carpeta.

  5. Haz clic en el objeto borrado de forma no definitiva. Aparecerá la página Detalles del objeto.

  6. En la lista Mostrar, selecciona Solo objetos borrados de forma no definitiva. Se muestra una lista de todas las versiones borradas de forma no definitiva de ese objeto.

  7. Para restablecer una versión específica de un objeto borrada de forma no definitiva, haz clic en Restablecer junto a esa versión. Se abrirá el panel para restablecer versiones de objetos.

  8. Haz clic en Confirm.

Línea de comandos

Para restablecer una versión de un objeto borrada de forma no definitiva, usa el comando gcloud storage restore:

  gcloud storage restore gs://BUCKET_NAME/OBJECT_NAME#GENERATION_NUMBER

Reemplaza lo siguiente:

  • BUCKET_NAME: el nombre del bucket. Por ejemplo, my-bucket.
  • OBJECT_NAME: el nombre del objeto del que deseas ver todas las versiones.
  • GENERATION_NUMBER: el número de generación del objeto borrado de forma no definitiva que deseas restablecer. Si no especificas el número de generación, se restablece la versión más reciente. Por ejemplo, 1560468815691234

Para obtener más opciones para restablecer varios objetos de forma masiva, incluido el restablecimiento de todas las versiones de un objeto con la marca all-versions, consulta la referencia de gcloud storage restore.

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 credenciales de OAuth. Para obtener instrucciones, consulta Autenticación de la API.
  2. Usa cURL para llamar a la API de JSON con una solicitud de objeto POST:

    curl -X POST \
      -H "Authorization: Bearer OAUTH2_TOKEN" \
      -H "Content-Type: application/json" \
      "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/o/OBJECT_NAME/restore?generation=GENERATION_NUMBER"

    Aquí:

    • OAUTH2_TOKEN es el token de acceso que generaste en el paso 1.
    • BUCKET_NAME es el nombre del bucket correspondiente. Por ejemplo, my-bucket.
    • OBJECT_NAME es el nombre del objeto borrado de forma no definitiva que deseas restablecer. Por ejemplo, cat.jpeg
    • GENERATION_NUMBER es el número de generación del objeto borrado de forma no definitiva que deseas restablecer. Si no especificas el número de generación, se restablece la versión más reciente. Por ejemplo, 1560468815691234.

Restablece de forma masiva objetos borrados de forma no definitiva en un bucket

Si deseas restablecer una gran cantidad de objetos o no conoces los objetos específicos que deseas restablecer, usa una operación de restablecimiento masivo. Ten en cuenta que las operaciones de restablecimiento masivo se realizan de forma asíncrona y, en algunos casos, pueden tardar una hora o más en comenzar.

La operación de restablecimiento masivo inicia una operación de larga duración en un bucket. Puedes usar Google Cloud CLI para obtener y enumerar operaciones de larga duración para ver los detalles y el estado de la operación de restablecimiento masivo mientras está en curso.

Console

  1. En la consola de Google Cloud, ve a la página Buckets de Cloud Storage.

    Ir a Buckets

  2. En la lista de buckets, busca el que contiene los objetos que deseas restablecer.

  3. Haz clic en el menú Ampliado del bucket () asociado al bucket y selecciona Create restore job.

    Se abrirá el panel Create a restore job.

  4. En la sección Choose which soft-deleted objects to restore, selecciona el período de eliminación desde el que deseas restablecer los objetos.

  5. Selecciona Filter by glob pattern y, luego, ingresa un patrón glob para restablecer únicamente los objetos que cumplan con los criterios del patrón glob (opcional).

  6. Activa o desactiva comportamientos de restablecimiento adicionales en la sección Restore options (opcional).

  7. Haz clic en Crear.

Para realizar un seguimiento del progreso de la operación de restablecimiento masivo, haz clic en el botón Notificaciones () que se encuentra en el encabezado de la consola de Google Cloud.

Línea de comandos

Para usar la operación de restablecimiento masivo para restablecer todos los objetos en un bucket, usa el comando gcloud storage restore.

Con el siguiente comando, se realiza una operación de restablecimiento masivo para restablecer de forma asíncrona todos los objetos del bucket que se borraron durante un período específico:

  gcloud storage restore gs://BUCKET_NAME/** \
      --async --deleted-after-time=DELETED_AFTER_TIME \
      --deleted-before-time=DELETED_BEFORE_TIME

Reemplaza lo siguiente:

  • BUCKET_NAME: el nombre del bucket. Por ejemplo, my-bucket.
  • DELETED_AFTER_TIME: es un argumento opcional para especificar la fecha después de la cual se restablecen los objetos. Por ejemplo, 2022-12-01
  • DELETED_BEFORE_TIME: es un argumento opcional para especificar la fecha antes de la que se restablecen los objetos. Por ejemplo, 2022-12-21.

    Si se ejecuta de forma correcta, el comando muestra el ID de la operación de larga duración asociada con la operación de restablecimiento masivo. Puedes obtener detalles sobre la operación de larga duración o cancelar la operación de larga duración para detener la operación de restablecimiento masivo antes de que se complete.

APIs 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 credenciales de OAuth. Para obtener instrucciones, consulta Autenticación de la API.
  2. Usa cURL para llamar a la API de JSON con una solicitud de objeto POST:

    curl -X POST \
      -H "Authorization: Bearer OAUTH2_TOKEN" \
      -H "Content-Type: application/json" \
      "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/o/bulkRestore"

    Aquí:

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

Si se ejecuta de forma correcta, el comando muestra el ID de la operación de larga duración asociada con la operación de restablecimiento masivo. Puedes obtener detalles sobre la operación de larga duración o cancelar la operación de larga duración para detener la operación de restablecimiento masivo antes de que se complete.

Administra operaciones de larga duración para el restablecimiento masivo

Las operaciones de larga duración en Google Cloud CLI se identifican con un nombre de operación, que es una combinación del nombre del bucket y el ID de la operación.

En el siguiente ejemplo, se muestra una operación de larga duración que se obtiene de una operación de restablecimiento masivo:

done: false
{
  "kind": "storage@operation",
  "name": "projects/_/buckets/my-bucket/operations/CiQyODRlMTY0My0wNGExLTQ3MWItOTE2Zi1hZmQ0ZmM4ZDc4MjQQAg",
  "metadata": {
    "@type": "type.googleapis.com/google.storage.v2.BulkRestoreObjectsMetadata",
    "commonMetadata": {
      "type": "bulk-restore-objects",
      "createTime": "2023-10-20T21:08:11.289Z",
      "updateTime": "2023-10-20T21:18:37.583Z",
      "endTime": "2023-10-20T21:18:37.583Z",
      "requestedCancellation": false,
      "progressPercent": -1,
    },
    "allow_overwrite": false,
    "matchGlobs": ["*"],
    "succeededCount": "0",
    "failedCount": "0",
    "skippedCount": "0",
  },
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.storage.v2.BulkRestoreObjectsResponse"
  }
}

Para obtener información general sobre cómo administrar operaciones de larga duración, consulta la documentación de gcloud storage operations.

Obtén los detalles de una operación de larga duración

Usa el comando gcloud storage operations describe:

gcloud storage operations describe projects/_/buckets/BUCKET_NAME/operations/OPERATION_ID

Reemplaza lo siguiente:

  • BUCKET_NAME: el nombre del bucket que contiene la operación de larga duración. Por ejemplo, my-bucket.

  • OPERATION_ID: el ID de la operación de larga duración que se muestra en la respuesta de la operación de restablecimiento masivo.

Enumera las operaciones de larga duración de un bucket

Usa el comando gcloud storage operations list:

gcloud storage operations list gs://BUCKET_NAME

Reemplaza lo siguiente:

  • BUCKET_NAME: el nombre del bucket que contiene las operaciones de larga duración. Por ejemplo, my-bucket.

Cancelar una operación de larga duración

Usa el comando gcloud storage operations cancel:

gcloud storage operations cancel projects/_/buckets/BUCKET_NAME/operations/OPERATION_ID

Reemplaza lo siguiente:

  • BUCKET_NAME: el nombre del bucket que contiene la operación de larga duración. Por ejemplo, my-bucket.

  • OPERATION_ID: el ID de la operación de larga duración que se muestra en la respuesta de la operación de restablecimiento masivo.

Manejo de errores

Las operaciones de larga duración se muestran desde las API asíncronas, que requieren diferentes prácticas de manejo de errores que las de las APIs síncronas. A diferencia de las APIs síncronas, las APIs que muestran operaciones de larga duración tienen éxito incluso si falla la operación subyacente. Cuando usas APIs que muestran operaciones de larga duración, respondes a los códigos de error que se muestran en las respuestas correctas, en lugar de responder a los códigos de error que se muestran en las respuestas con errores.

Por ejemplo, si realizas una solicitud de restablecimiento masivo de la eliminación no definitiva, muestra un código de estado HTTP correcto (200 OK), incluso si se produce un error en el transcurso de la operación. Para verificar si la operación de restablecimiento masivo se realizó de forma correcta, consulta el estado de la operación de larga duración.

Ten en cuenta que las APIs de operación de larga duración (Get, Create, Cancel) son síncronas y muestran errores normales.

Reintentos

Las APIs de eliminación no definitiva asíncrona son idempotentes de forma predeterminada. Por lo tanto, puedes reintentar de manera segura las llamadas a la API de eliminación no definitiva sin preocuparte por modificar los recursos de forma involuntaria.

¿Qué sigue?