Eliminar versiones de objetos de un bucket con control de versiones habilitado - Amazon Simple Storage Service

Eliminar versiones de objetos de un bucket con control de versiones habilitado

Puede eliminar versiones de objetos de los buckets de Amazon S3 siempre que lo desee. Además, también puede definir normas de configuración de ciclo de vida para objetos que tengan un ciclo de vida bien definido, de modo que solicite a Amazon S3 expirar versiones de objetos actuales o eliminar permanentemente versiones de objetos no actuales. Cuando en su bucket está habilitado o suspendido el control de versiones, las acciones de configuración de ciclo de vida funcionan así:

  • La Expiration acción se aplica a la versión actual del objeto. En lugar de eliminar la versión actual, Amazon S3 conserva la versión actual como versión no actual agregándole un marcador de eliminación, con lo cual se convierte en la versión actual.

  • La acción NoncurrentVersionExpiration se aplica a las versiones no actuales del objeto, y Amazon S3 elimina permanentemente estas versiones de objeto. No puede recuperar objetos eliminados permanentemente.

Para obtener más información, consulte Administración del ciclo de vida del almacenamiento .

Eliminar casos de uso de solicitudes

Una solicitud DELETE presenta los siguientes casos de uso:

  • Cuando está habilitado el control de versiones, un DELETE simple no puede eliminar permanentemente un objeto. En su lugar, Amazon S3 inserta un marcador de eliminación en el bucket, y ese marcador se convierte en la versión actual del objeto con un nuevo ID.

    Cuando intenta GET un objeto cuya versión actual es un marcador de eliminación, Amazon S3 se comporta como si el objeto se hubiera eliminado (aunque no sea el caso) y devuelve un error 404. Para obtener más información, consulte Trabajar con marcadores de eliminación .

    El siguiente gráfico muestra cómo una solicitud DELETE simple no elimina realmente el objeto especificado. En su lugar, Amazon S3 inserta un marcador de eliminación.

  • Para eliminar de forma permanente objetos con control de versiones, debe usar DELETE Object versionId.

    El siguiente gráfico muestra cómo la eliminación de una versión de objeto específica elimina permanentemente el objeto.

Para eliminar versiones de objetos

Puede eliminar versiones de objetos en Amazon S3 mediante la consola, los SDK de AWS, la API REST o AWS Command Line Interface.

  1. Inicie sesión en la AWS Management Console y abra la consola de Amazon S3 en https://console.aws.amazon.com/s3/.

  2. En la lista Buckets (Buckets), elija el nombre del bucket que contiene el objeto.

  3. En la lista Objects (Objetos), elija el nombre del objeto.

  4. Elija Versions (Versiones).

    Amazon S3 muestra todas las versiones del objeto.

  5. Active la casilla de verificación situada junto al ID de versión de las versiones que desea eliminar de manera permanente.

  6. Elija Eliminar.

  7. En Permanently delete objects? (¿Eliminar objetos de forma permanente?) , ingrese permanently delete.

    aviso

    Cuando elimina de forma permanente una versión de un objeto, la acción no se puede deshacer.

  8. Elija Delete objects (Eliminar objetos).

    Amazon S3 elimina la versión del objeto.

Para ver ejemplos de cómo eliminar objetos con los AWS SDK para Java, .NET y PHP, consulte Eliminación de objetos de Amazon S3. Los ejemplos para eliminar objetos en buckets sin control de versiones y habilitados para la control de versiones son los mismos. Sin embargo, para los buckets habilitados para el control de versiones, Amazon S3 asigna un número de versión. De lo contrario, el número de versión es un valor nulo.

Para obtener información acerca del uso de otros SDK de AWS, consulte el Centro de desarrolladores de AWS.

Python

Para obtener instrucciones acerca de cómo crear y probar una muestra funcional, consulte Mediante AWS SDK for Python (Boto).

En el siguiente ejemplo de código de Python, se elimina permanente un objeto con control de versiones mediante la eliminación de todas sus versiones.

def permanently_delete_object(bucket, object_key): """ Permanently deletes a versioned object by deleting all of its versions. Usage is shown in the usage_demo_single_object function at the end of this module. :param bucket: The bucket that contains the object. :param object_key: The object to delete. """ try: bucket.object_versions.filter(Prefix=object_key).delete() logger.info("Permanently deleted all versions of object %s.", object_key) except ClientError: logger.exception("Couldn't delete all versions of %s.", object_key) raise

Para eliminar una versión específica de un objeto:

  • En un DELETE, especifique un ID de versión.

ejemplo — Eliminar una versión específica

En el ejemplo siguiente se elimina la versión UIORUnfnd89493jJFJ de photo.gif.

DELETE /photo.gif?versionId=UIORUnfnd89493jJFJ HTTP/1.1 Host: bucket.s3.amazonaws.com Date: Wed, 12 Oct 2009 17:50:00 GMT Authorization: AWS AKIAIOSFODNN7EXAMPLE:xQE0diMbLRepdf3YB+FIEXAMPLE= Content-Type: text/plain Content-Length: 0

El siguiente comando elimina un objeto denominado test.txt de un bucket denominado DOC-EXAMPLE-BUCKET1. Para quitar una versión específica de un objeto, debe ser el propietario del bucket y debe utilizar el subrecurso de del identificador de versión.

aws s3api delete-object --bucket DOC-EXAMPLE-BUCKET1 --key test.txt --version-id versionID

Para obtener más información sobre delete-object, consulte delete-object en la Referencia de comandos de AWS CLI.

Para obtener más información sobre cómo eliminar versiones de objetos, consulte los siguientes temas: