

# Eliminar versiones de objetos de un bucket con control de versiones habilitado
<a name="DeletingObjectVersions"></a>

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 acerca del ciclo de vida de S3, consulte [Administración del ciclo de vida de los objetos](object-lifecycle-mgmt.md) y [Ejemplos de configuraciones de S3 Lifecycle](lifecycle-configuration-examples.md).

Para ver cuántas versiones de objetos actuales y no actuales tienen los buckets, puede usar las métricas de Lente de almacenamiento de Amazon S3. Lente de almacenamiento de S3 es una función de análisis de almacenamiento en la nube que puede utilizar para obtener visibilidad en toda la organización sobre el uso y la actividad del almacenamiento de objetos. Para obtener más información, consulte [Uso de Lente de almacenamiento de S3 para optimizar los costos de almacenamiento](https://docs.aws.amazon.com/AmazonS3/latest/userguide/storage-lens-optimize-storage.html?icmpid=docs_s3_user_guide_DeletingObjectVersions.html). Para obtener una lista completa de las métricas, consulte el [Glosario de métricas de Lente de almacenamiento de S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/storage_lens_metrics_glossary.html?icmpid=docs_s3_user_guide_replication.html).

**nota**  
 Se aplican tasas normales de Amazon S3 por cada versión de un objeto almacenado y transferido, incluidas las versiones de objetos no actuales. Para obtener más información, consulte [Precios de Amazon S3](https://aws.amazon.com/s3/pricing/). 

## Eliminar casos de uso de solicitudes
<a name="delete-request-use-cases"></a>

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. (Una solicitud `DELETE` simple es una solicitud que no especifica un ID de versión). 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](DeleteMarker.md).

  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.  
![\[Ilustración que muestra la inserción de un marcador de eliminación.\]](http://docs.aws.amazon.com/es_es/AmazonS3/latest/userguide/images/versioning_DELETE_versioningEnabled.png)
+ 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.  
![\[Diagrama que muestra cómo DELETE Object versionId elimina permanentemente una versión de objeto específica.\]](http://docs.aws.amazon.com/es_es/AmazonS3/latest/userguide/images/versioning_DELETE_versioningEnabled2.png)

## Para eliminar versiones de objetos
<a name="delete-object-version"></a>

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

### Uso de la consola de S3
<a name="deleting-object-versions"></a>

1. Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon S3 en [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

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

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

1. Elija **Versions (Versiones)**.

   Amazon S3 muestra todas las versiones del objeto.

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

1. Elija **Eliminar**.

1. 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.

1. Elija **Eliminar objetos**.

   Amazon S3 elimina la versión del objeto.

### Uso de los AWS SDK
<a name="delete-obj-version-version-enabled-bucket-sdks"></a>

Para ver ejemplos de cómo eliminar objetos con los SDK de AWS para Java, .NET y PHP, consulte [Eliminación de objetos de Amazon S3](DeletingObjects.md). 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](https://aws.amazon.com/code/). 

------
#### [ Python ]

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
```

------

### Uso de la API de REST
<a name="delete-obj-version-enabled-bucket-rest"></a>

**Para eliminar una versión específica de un objeto**
+ En un `DELETE`, especifique un ID de versión.

**Example — Eliminar una versión específica**  
En el ejemplo siguiente se elimina la versión `UIORUnfnd89493jJFJ` de `photo.gif`.  

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

### Uso de AWS CLI
<a name="delete-obj-version-enabled-bucket-cli"></a>

El comando siguiente elimina un objeto denominado test.txt de un bucket denominado `amzn-s3-demo-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 amzn-s3-demo-bucket1 --key test.txt --version-id versionID
```

Para obtener más información sobre `delete-object`, consulte [https://docs.aws.amazon.com/cli/latest/reference/s3api/delete-object.html](https://docs.aws.amazon.com/cli/latest/reference/s3api/delete-object.html) en la *Referencia de los comandos de AWS CLI*.

Para obtener más información sobre cómo eliminar versiones de objetos, consulte los siguientes temas:
+ [Trabajar con marcadores de eliminación](DeleteMarker.md)
+ [Borre marcadores de eliminación para convertir una versión anterior en una actual](ManagingDelMarkers.md#RemDelMarker)
+ [Eliminar un objeto de un bucket habilitado para la eliminación de MFA](UsingMFADelete.md)