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. Mientras este cambio se propaga, es posible que se produzcan errores HTTP 404 NoSuchKey
intermitentes en las solicitudes de objetos creados o actualizados después de habilitar el control de versiones. 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 Administración de identidades y accesos para 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).

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.

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.

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.

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.

Puede eliminar permanentemente un objeto especificando la versión que quiera eliminar. Solo el propietario de un bucket de Amazon S3 o un usuario de IAM autorizado puede eliminar permanentemente una versión. 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.

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 de control de versiones.