Cómo funciona S3 Versioning - Amazon Simple Storage Service

Cómo funciona S3 Versioning

Puede utilizar S3 Versioning para mantener varias versiones de un objeto en un bucket para poder restaurar objetos que se eliminan o sobrescriben accidentalmente. Por ejemplo, si aplica el control de versiones de S3 a un bucket, se producen los siguientes cambios:

  • Si elimina un objeto, en lugar de eliminarlo permanentemente, Amazon S3 inserta un marcador de eliminación, que se convierte en la versión del objeto actual. Luego, puede restaurar la versión anterior. Para obtener más información, consulte Eliminar versiones de objetos de un bucket con control de versiones habilitado.

  • Si sobrescribe un objeto, Amazon S3 añade una nueva versión del objeto en el bucket. La versión anterior permanece en el bucket y pasa a ser una versión no actual. Puede restaurar la versión anterior.

nota

Se aplican tasas normales de Amazon S3 por cada versión de un objeto almacenado y transferido. Cada versión de un objeto es el objeto en sí, no se limita a ser una diferenciación de la versión anterior. Por tanto, si tiene tres versiones de un objeto almacenado, se le cobrará por tres objetos.

Cada bucket de S3 que crea cuenta con un subrecurso de control de versiones asociado. (Para obtener más información, consulte Opciones de configuración de buckets.) De forma predeterminada, su bucket no tendrá control de versiones y, por tanto, el subrecurso de control de versiones almacena una configuración de control de versiones vacía.

<VersioningConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> </VersioningConfiguration>

Para habilitar el control de versiones, puede enviar una solicitud a Amazon S3 con una configuración de control de versiones que incluya un estado Enabled.

<VersioningConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> <Status>Enabled</Status> </VersioningConfiguration>

Para suspender el control de versiones, puede configurar el valor de estado como Suspended.

nota

Al habilitar el control de versiones en un bucket por primera vez, es posible que el cambio se propague por completo en un instante. Para emitir operaciones de escritura (PUT o DELETE) en los objetos del bucket, se recomienda que espere 15 minutos después de habilitar el control de versiones.

El propietario del bucket y todos los usuarios autorizados de AWS Identity and Access Management (IAM) pueden habilitar el control de versiones. El bucket es propiedad de la Cuenta de AWS que creó el bucket. Para obtener más información sobre los permisos, consulte Identity and Access Management en Amazon S3.

Para obtener más información acerca de cómo habilitar y desactivar el control de versiones de S3 mediante la AWS Management Console, AWS Command Line Interface (AWS CLI) o la API de REST, consulte Habilitar el control de versiones en buckets.

ID de versión

Si habilita el control de versiones para un bucket, Amazon S3 genera automáticamente un ID de versión único para el objeto que se almacena. En un bucket, por ejemplo, puede tener dos objetos con la misma clave (nombre de objeto) pero ID de versión diferentes, como photo.gif (versión 111111) y photo.gif (versión 121212).


                Diagrama que muestra cómo funciona el control de versiones de S3 para un bucket con control de versiones habilitado que tiene dos objetos con la misma clave pero diferentes ID de versión.

Cada objeto tiene un ID de versión, independientemente de si S3 Versioning está habilitado o no. Si no ha habilitado S3 Versioning, Amazon S3 configura el valor del ID de versión en null. Si S3 Versioning está activado, Amazon S3 asigna un valor de ID de versión para el objeto. Este valor distingue dicho objeto de otras versiones de la misma clave.

Cuando se habilita S3 Versioning en un bucket existente, los objetos que ya están almacenados en el bucket no se modifican. Sus ID de versión (null), el contenido y los permisos siguen siendo los mismos. Después de habilitar Control de versiones de S3, cada objeto que se agrega al bucket obtiene un ID de versión, que lo distingue de otras versiones de la misma clave.

Solo Amazon S3 genera ID de versión y no se pueden editar. Los ID de versión son cadenas opacas unicode, codificadas en UTF-8, listas para URL que no tienen más de 1024 bytes de longitud. A continuación se muestra un ejemplo:

3sL4kqtJlcpXroDTDmJ+rmSpXd3dIbrHY+MTRCxf3vjVBH40Nr8X8gdRQBpUMLUo

nota

Para mayor simplicidad, los otros ejemplos de este tema utilizan ID mucho más cortos.

Flujos de trabajo del control de versiones

Cuando realiza una operación PUT para un objeto en un bucket con control de versiones habilitado, la versión no actual no se sobrescribirá. Como se muestra en el siguiente gráfico, cuando una nueva versión de photo.gif se somete a una operación PUT en un bucket que ya contiene un objeto con el mismo nombre, se produce el siguiente comportamiento:

  • El objeto original (ID = 111111) permanece en el bucket.

  • Amazon S3 genera un nuevo identificador de versión (121212) y agrega esta versión más reciente del objeto al bucket.


                Diagrama que muestra cómo funciona el control de versiones de S3 cuando realiza una operación PUT en un objeto en un bucket con control de versiones habilitado.

Con esta funcionalidad, puede recuperar una versión anterior de un objeto si un objeto se ha sobrescrito o eliminado accidentalmente.

Cuando realiza una operación DELETE en un objeto, todas las versiones permanecen en el bucket y Amazon S3 inserta un marcador de eliminación, como se muestra en el siguiente gráfico.


                Diagrama que muestra cómo funciona el control de versiones de S3 cuando realiza una operación DELETE en un objeto en un bucket con control de versiones habilitado.

El marcador de eliminación se convierte en la versión actual del objeto. De forma predeterminada, las solicitudes GET recuperarán la versión almacenada más recientemente. Realizar una solicitud GET Object cuando la versión actual es un marcador de eliminación devuelve un error 404 Not Found, como se muestra en el siguiente gráfico.


                Diagrama que muestra la respuesta a una operación GET para un objeto en un bucket con control de versiones habilitado cuando la versión actual es un marcador de eliminación.

Sin embargo, puede realizar una operación GET en una versión no actual de un objeto especificando su ID de versión. En el siguiente gráfico, se realiza una operación GET sobre una versión de objeto específica, 111111. Amazon S3 devuelve la versión del objeto aunque no sea la versión actual.

Para obtener más información, consulte Recuperar versiones de objetos de un bucket habilitado para el control de versiones.


                Diagrama que muestra cómo funciona el control de versiones de S3 cuando realiza una operación GET en una versión no actual en un bucket con control de versiones habilitado.

Puede eliminar permanentemente un objeto especificando la versión que quiera eliminar. El único usuario que puede eliminar una versión de forma permanente de un bucket de Amazon S3 es el propietario. Si la operación DELETE especifica el versionId, la versión del objeto se elimina permanentemente y Amazon S3 no inserta un marcador de eliminación.


                Diagrama que muestra cómo DELETE versionId elimina permanentemente una versión de objeto específica de un bucket con control de versiones habilitado sin insertar un marcador de eliminación.

Se pueden agregar factores adicionales de seguridad al configurar un bucket para habilitar la eliminación de autenticación multifactor (MFA). Cuando habilita la eliminación de MFA en un bucket, el propietario del bucket debe incluir dos formas de autenticación en cualquier solicitud para eliminar una versión o cambiar el estado de control de versiones del bucket. Para obtener más información, consulte Configurar la eliminación de MFA.

¿Cuándo se crean las nuevas versiones de un objeto?

Las nuevas versiones de objetos se crean solo cuando usted PUT un nuevo objeto. Tenga en cuenta que ciertas acciones como CopyObject funcionan mediante la implementación de una operación PUT.

Algunas acciones que modifican el objeto actual no crean una nueva versión ya que no PUT un objeto nuevo. Esto incluye acciones como cambiar las etiquetas de un objeto.

importante

Si detecta un aumento significativo en el número de respuestas de HTTP 503 (Servicio no disponible) recibidas para solicitudes PUT o DELETE de Amazon S3 a objetos en un bucket de Amazon S3 con Control de versiones de S3 habilitado, puede que tenga uno o varios objetos en el bucket para los que habrá millones de versiones. Para obtener más información, consulte la sección Control de versiones de S3 de Solución de problemas.