Gestión de versiones de objetos

Configuración Uso

La gestión de versiones de objetos conserva los objetos eliminados como objetos con versiones que no son actuales y que permanecen accesibles en tu segmento hasta que se eliminan de forma explícita. Esta función se usa para monitorizar los cambios en los objetos y para habilitar la recuperación de versiones específicas de un objeto. En esta página se describe la función y las opciones disponibles al usarla.

Te recomendamos que uses la eliminación lógica en lugar de la gestión de versiones de objetos para protegerte frente a la pérdida permanente de datos debido a eliminaciones accidentales o malintencionadas. Para obtener más información sobre cuándo usar la eliminación lógica y la gestión de versiones de objetos, consulta las consideraciones.

Introducción

Habilita la gestión de versiones de objetos en un segmento. Una vez habilitada:

  • Cloud Storage conserva una versión de objeto no actual cada vez que sustituyes o eliminas una versión de objeto activa, siempre que no especifiques el número de generación de la versión activa.

    • Las versiones no actuales conservan el nombre del objeto, pero se identifican de forma única por su número de generación.

    • Las versiones no actuales solo aparecen en las solicitudes que piden explícitamente que se incluyan.

  • Para eliminar una versión no actual de un objeto, incluye el número de generación en la solicitud de eliminación o usa la gestión del ciclo de vida de los objetos.

  • En un segmento con la eliminación no definitiva habilitada, cuando eliminas un objeto que no es la versión actual, Cloud Storage cambia su estado a "eliminado no definitivamente". Un objeto eliminado de forma no definitiva se elimina de forma permanente una vez que vence el periodo de retención de eliminación no definitiva.

  • Las versiones no actuales de los objetos existen independientemente de cualquier versión activa.

Si inhabilitas la gestión de versiones de objetos:

  • El segmento ya no acumula versiones no actuales de objetos.

  • Las versiones de objetos que ya existan en el cubo no se verán afectadas.

Cuestiones importantes

  • No hay ningún límite predeterminado en el número de versiones de objetos que puedes tener. Cada versión de un objeto que no sea actual se cobra a la misma tarifa que cuando estaba activa.

  • Los cargos por eliminación anticipada solo se aplican cuando se quita una versión del objeto del segmento, no cuando deja de ser actual. La duración del almacenamiento de una versión eliminada de un segmento se basa en el momento en que se añadió al segmento, no en el momento en que dejó de ser actual.

  • Si habilitas la gestión de versiones, te recomendamos que uses la gestión del ciclo de vida de los objetos, que puede eliminar las versiones más antiguas de un objeto después de un periodo determinado o cuando las versiones más recientes dejen de ser actuales. Para ver una posible configuración, consulta el ejemplo de configuración del ciclo de vida para eliminar objetos.

  • Para determinar si debes habilitar la gestión de versiones de objetos o la eliminación lógica en tu segmento, ten en cuenta lo siguiente:

    • Si quieres evitar la pérdida permanente de datos debido a eliminaciones accidentales o maliciosas, utiliza la eliminación no definitiva en lugar de la gestión de versiones de objetos. La eliminación no definitiva ofrece protección a nivel de contenedor, ya que conserva todos los objetos activos o no actuales que se hayan eliminado recientemente. También puede proteger contra las eliminaciones a nivel de segmento.

    • Si tiene requisitos de facturación específicos y ha configurado reglas de gestión del ciclo de vida de los objetos para conservar un número determinado de versiones no actuales, utilice el control de versiones de objetos.

      En este caso, solo obtendrá una protección parcial contra las eliminaciones accidentales, ya que la gestión de versiones de objetos no protege contra los eventos a nivel de segmento ni contra las eliminaciones no deseadas de objetos no actuales.

    • Se puede acceder a los objetos no actuales y leerlos, mientras que los objetos eliminados de forma no definitiva se conservan sin conexión y no se pueden leer. Para restaurar objetos eliminados temporalmente, se necesitan permisos de gestión de identidades y accesos específicos, que están disponibles para el rol de administrador de almacenamiento (roles/storage.admin) de gestión de identidades y accesos.

      Si quieres acceder a los objetos eliminados más recientemente y tener un alto nivel de protección frente a la pérdida permanente de datos debido a eventos de eliminación accidental y maliciosa, puedes habilitar el control de versiones de objetos y la eliminación no definitiva en el mismo bucket. Puedes configurar la política de gestión del ciclo de vida de los objetos para que elimine automáticamente las versiones no actuales después de un número específico de días y, a continuación, usar la eliminación suave para proporcionar una capa de protección adicional.

Metadatos de objetos no actuales

Las versiones no actuales de los objetos tienen sus propios metadatos, que pueden ser distintos de los de la versión publicada. Lo más importante es que una versión no actual conserva sus ACLs y no tiene necesariamente los mismos permisos que la versión activa.

Cada versión, ya sea publicada o no actual, tiene un conjunto de metadatos. Solo el número de metageneración más reciente hace referencia a los metadatos. Los números de metageneración antiguos no se pueden usar para acceder a metadatos que se hayan cambiado posteriormente.

Para actualizar los metadatos de una versión no actual de un objeto, especifica su generation en la solicitud. Para asegurarte de que se aplican las semánticas de lectura-modificación-escritura, puedes usar una condición previa de coincidencia de metageneración. Si se usa esta condición previa, la actualización fallará si los metadatos que intentas actualizar se han modificado entre el momento en que los leíste y el momento en que enviaste la actualización.

Ejemplo de gestión de versiones de objetos

En este ejemplo se muestra qué ocurre con el objeto cat.jpg de un segmento en el que se han habilitado la gestión de versiones de objetos y la eliminación no definitiva a medida que se sustituye, actualiza y elimina el objeto.

Subes una imagen nueva

Cuando subescat.jpg por primera vez un archivo a Cloud Storage, se le asigna un generation número y un metageneration número. En este ejemplo, el número de generación es 1360887697105000. Como el objeto es nuevo, el número metageneration es 1.

cat.jpg recibe los números generation y metageneration aunque la gestión de versiones de objetos no esté habilitada. Puedes obtener estos números consultando los metadatos del objeto.

Habilita la gestión de versiones de objetos

En este punto, decides habilitar la gestión de versiones de objetos en tu segmento. Esto no afecta a los números de generation o metageneration de cat.jpg.

Cambias los metadatos de la imagen

Actualiza los metadatos de cat.jpg añadiendo metadatos personalizados: color:black. Al actualizar los metadatos, el valor metageneration de cat.jpg aumenta; en este caso, de 1 a 2. Sin embargo, el objeto en sí no cambia, por lo que Cloud Storage sigue almacenando solo una versión de cat.jpg, y la versión sigue teniendo un número de generation de 1360887697105000.

Subes una nueva versión de la imagen

Subes una nueva versión de cat.jpg a tu segmento de Cloud Storage. Cuando lo haga, la gestión de versiones de objetos cambiará el estado del objeto cat.jpg a no actual. La versión no actual conserva la misma clase de almacenamiento y los mismos metadatos que tenía antes. La versión no actual solo aparece si crea una ficha con versiones. No aparece en los comandos de fichas normales. Ahora se hace referencia a la versión no actual de la siguiente manera: cat.jpg#1360887697105000.

Mientras tanto, el archivo cat.jpg que se acaba de subir se convierte en la versión activa del objeto. Este nuevo cat.jpg tiene su propio número generation, que en este ejemplo es 1360887759327000. También obtiene sus propios metadatos y un metageneration número de 1, lo que significa que no contiene los metadatos de color:black a menos que lo especifiques. Cuando accedas a cat.jpg, o lo modifiques, se usará esta versión. También puedes consultar esta versión de cat.jpg mediante su número generation. Por ejemplo, cuando uses Google Cloud CLI, te referirás a él como cat.jpg#1360887759327000.

Eliminas la versión activa de la imagen

Ahora, elimina cat.jpg. Cuando lo hagas, la versión que tenía el número de generación 1360887759327000 dejará de ser la actual. Tu segmento ahora contiene dos versiones no actuales de cat.jpg y ninguna versión activa. Puedes seguir consultando cualquiera de las versiones no actuales mediante su número generation, pero si intentas acceder a cat.jpg sin un número generation, no podrás.

Del mismo modo, una lista de objetos normal del segmento no mostrará cat.jpg como uno de los objetos del segmento. Para obtener información sobre cómo mostrar versiones de objetos que no están al día, consulta Mostrar versiones de objetos que no están al día.

Inhabilitas la gestión de versiones de objetos

Inhabilita la gestión de versiones de objetos, lo que impide que los objetos dejen de ser actuales. Las versiones de objetos que no están al día seguirán en Cloud Storage. Aunque la función de control de versiones de objetos esté inhabilitada, cat.jpg#1360887697105000 y cat.jpg#1360887759327000 seguirán almacenados en tu cubo hasta que los elimines.

Restauras una de las versiones no actuales

Aunque la gestión de versiones de objetos esté inhabilitada, puedes hacer una copia de una de las versiones no actuales, lo que restaura la versión. Cuando lo hagas, tu contenedor tendrá tres versiones de cat.jpg: las dos versiones no actuales y la versión publicada que se ha restaurado.

Eliminas una de las versiones que no son la actual

Puedes eliminar una versión no actual de un objeto manualmente o mediante la gestión del ciclo de vida de los objetos.

Cuando eliminas una versión no actual, cat.jpg#1360887697105000, se elimina de forma temporal. Este objeto eliminado de forma no definitiva se conserva durante el periodo de retención de eliminación no definitiva especificado en la política de eliminación no definitiva del segmento. Una vez que haya transcurrido el periodo de retención, Cloud Storage eliminará de forma permanente la versión eliminada de forma no definitiva de este objeto.

Restauras una de las versiones del objeto eliminado de forma no definitiva

Aunque la gestión de versiones de objetos esté inhabilitada, puedes restaurar una versión eliminada no definitivamente de un objeto que no sea actual. Se restaura una copia de la versión eliminada de forma lógica como versión activa con nuevos metadatos de objeto y una nueva fecha de creación. El objeto eliminado de forma no definitiva original también permanece en el contenedor y se elimina de forma permanente una vez que vence el periodo de retención de eliminación no definitiva.

Referencia de gestión de versiones de objetos

En esta tabla de referencia se muestra lo que ocurre cuando realizas determinadas acciones con el control de versiones de objetos.

Estado de la gestión de versiones de objetos Estado de eliminación no definitiva Acción Resultado
Inhabilitado Inhabilitado
Eliminar dog.png dog.png se ha eliminado de forma permanente.
Elimina una versión no actual de dog.png especificando su número de generación.1 La versión no actual se elimina de forma permanente.
Sustituye dog.png por una nueva versión. La nueva versión sustituye a la publicada y recibe un nuevo número de generación. La versión antigua se elimina de forma permanente.
Copia una versión no actual de dog.png en la versión activa.1 Una copia de la versión no actual sustituye a la publicada y recibe un nuevo número de generación. La versión antigua se elimina de forma permanente.
Inhabilitado Habilitado
Eliminar dog.png dog.png se elimina de forma lógica.
Elimina una versión no actual de dog.png especificando su número de generación.1 La versión no actual se elimina de forma lógica.
Sustituye dog.png por una nueva versión. La nueva versión sustituye a la publicada y recibe un nuevo número de generación. La versión antigua en directo se elimina de forma lógica.
Copia una versión no actual de dog.png en la versión activa.1 Una copia de la versión no actual sustituye a la publicada y recibe un nuevo número de generación. La versión antigua en directo se elimina de forma lógica.
Habilitado Inhabilitado
Elimina la versión activa de dog.png sin especificar su número de generación. La versión publicada se convierte en una versión no actual y mantiene el mismo número de generación.
Elimina la versión activa de dog.png especificando su número de generación. La versión publicada se elimina de forma permanente.
Elimina una versión no actual de dog.png especificando su número de generación. La versión no actual se elimina de forma permanente.
Sustituye dog.png por una nueva versión. La nueva versión sustituye a la publicada y recibe un nuevo número de generación. La versión publicada anterior se convierte en una versión no actual y conserva el mismo número de generación.
Copia una versión no actual de dog.png en la versión publicada. Una copia de la versión no actual sustituye a la publicada y recibe un nuevo número de generación. La versión publicada anterior se convierte en una versión no actual y conserva el mismo número de generación.
Habilitado Habilitado
Elimina la versión activa de dog.png sin especificar su número de generación. La versión publicada se convierte en una versión no actual y mantiene el mismo número de generación.
Elimina la versión activa de dog.png especificando su número de generación. La versión publicada se elimina de forma lógica.
Elimina una versión no actual de dog.png especificando su número de generación. La versión no actual se elimina de forma lógica.
Sustituye dog.png por una nueva versión. La nueva versión sustituye a la publicada y recibe un nuevo número de generación. La versión publicada anterior se convierte en una versión no actual y conserva el mismo número de generación.
Copia una versión no actual de dog.png en la versión publicada. Una copia de la versión no actual sustituye a la publicada y recibe un nuevo número de generación. La versión publicada anterior se convierte en una versión no actual y conserva el mismo número de generación.

1 Puede haber una versión no actual si el segmento tenía habilitada la gestión de versiones de objetos anteriormente.

Comportamiento de restauración

Puedes restaurar de forma eficaz una versión de un objeto que no sea la actual para que sea la versión activa. Consulta la guía paso a paso para restaurar versiones de objetos que no están al día.

Si lo haces con la gestión de versiones de objetos habilitada y ya existe una versión activa del objeto en tu segmento, Cloud Storage sustituirá la versión activa, pero también la conservará como una nueva versión que no sea actual. En ese caso, el segmento contendrá el objeto sustituido (que ahora no es actual) y dos copias del objeto que no era actual (una copia activa y otra que sigue sin ser actual), y se te cobrará por el almacenamiento de todos ellos. Para evitar que se apliquen cargos innecesarios, elimina la versión no actual que has usado para crear la copia activa actual o configura la gestión del ciclo de vida de los objetos para eliminar los objetos no actuales cuando cumplan las condiciones que especifiques.

Siguientes pasos