

# Gestión de marcadores de eliminación
<a name="ManagingDelMarkers"></a>

## Configuración del ciclo de vida para limpiar automáticamente los marcadores de eliminación vencidos
<a name="LifecycleDelMarker"></a>

Un marcador de eliminación de objetos vencido es aquel en el que se eliminan todas las versiones de objetos y solo queda un único marcador de eliminación. Si la configuración de ciclo de vida está definida para eliminar las versiones actuales, o la acción `ExpiredObjectDeleteMarker` se ha establecido explícitamente, Amazon S3 borra el marcador de eliminación del objeto vencido. Para ver un ejemplo, consulte [Eliminación de marcadores de eliminación de objetos vencidos en un bucket con control de versiones habilitado](lifecycle-configuration-examples.md#lifecycle-config-conceptual-ex7). 

## Borre marcadores de eliminación para convertir una versión anterior en una actual
<a name="RemDelMarker"></a>

Cuando se elimina un objeto en un bucket con control de versiones activado, todas las versiones permanecen en el bucket y Amazon S3 crea un marcador de eliminación para el objeto. Para anular la eliminación del objeto, debe eliminar este marcador de eliminación. Para obtener más información acerca del control de versiones y los marcadores de eliminación, consulte [Retención de varias versiones de objetos con Control de versiones de S3](Versioning.md).

Para eliminar permanentemente un marcador de eliminación, se debe incluir el ID de versión en una solicitud `DeleteObject versionId`. En el siguiente gráfico se muestra cómo una solicitud `DeleteObject versionId` elimina permanentemente un marcador de eliminación.

![Ilustración que muestra la eliminación de un marcador de eliminación utilizando su ID de versión.](http://docs.aws.amazon.com/es_es/AmazonS3/latest/userguide/images/versioning_DELETE_deleteMarkerVersioned.png)


Al borrar el marcador de eliminación, ahora una solicitud `GET` simple devuelve el ID de versión actual (121212) del objeto. 

**nota**  
Si usa una solicitud `DeleteObject` para borrar un marcador de eliminación (sin especificar el ID de versión del marcador de eliminación), Amazon S3 no borra el marcador de eliminación, sino que `PUTs` (inserta) un nuevo marcador de eliminación.

Para borrar un marcador de eliminación con un ID de versión `NULL`, se debe pasar el `NULL` como el ID de versión en la solicitud `DeleteObject`. En la siguiente figura, se muestra cómo una solicitud `DeleteObject` simple realizada sin un ID de versión donde la versión actual es un marcador de eliminación, no elimina nada, sino que agrega un marcador de eliminación adicional con un ID de versión único (7498372).

![Ilustración que muestra la eliminación de un marcador de eliminación utilizando su ID de versión NULO.](http://docs.aws.amazon.com/es_es/AmazonS3/latest/userguide/images/versioning_DELETE_deleteMarker.png)


## Uso de la consola de S3
<a name="undelete-objects"></a>

Siga los pasos siguientes para recuperar objetos eliminados que no son carpetas del bucket de S3, incluidos los objetos que se encuentran dentro de esas carpetas. 

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 en cuestión.

1. Para ver una lista de las **versiones** de los objetos en el bucket, elija el modificador **List versions (Listar versiones)**. Podrá ver los marcadores de eliminación de los objetos eliminados. 

   

1. Para anular la eliminación de un objeto, debe eliminar su marcador de eliminación. Marque la casilla de verificación que aparece junto al **delete marker** (marcador de eliminación) del objeto que desee recuperar y, a continuación, elija **Delete** (Eliminar).

1. Confirme la eliminación en la página **Delete objects (Eliminar objetos)** .

   1. Para **Permanently delete objects?** (¿Eliminar objetos de forma permanente?), ingrese **permanently delete**.

   1. Elija **Delete objects (Eliminar objetos)**.

**nota**  
No puede usar la consola de Amazon S3 para anular la eliminación de carpetas. Debe utilizar la AWS CLI o el SDK. Para ver ejemplos, consulte [¿Cómo puedo recuperar un objeto de Amazon S3 que se eliminó en un bucket con control de versiones habilitado?](https://aws.amazon.com/premiumsupport/knowledge-center/s3-undelete-configuration/) en el Centro de conocimientos de AWS.

## Uso de la API de REST
<a name="delete-marker-rest-api"></a>

**Para eliminar permanentemente un marcador de eliminación:**

1. Establezca el parámetro `versionId` según el ID de la versión del marcador de eliminación que quiera eliminar.

1. Envíe una solicitud `DELETE Object versionId`.

**Example — Eliminar un marcador de eliminación**  
En el siguiente ejemplo se elimina el marcador de eliminación para la versión 4857693 de `photo.gif`.  

```
1. DELETE /photo.gif?versionId=4857693 HTTP/1.1
2. Host: bucket.s3.amazonaws.com
3. Date: Wed, 28 Oct 2009 22:32:00 GMT
4. Authorization: AWS AKIAIOSFODNN7EXAMPLE:0RQf4/cRonhpaBX5sCYVf1bNRuU=
```

Al eliminar un marcador de eliminación, Amazon S3 incluye en la respuesta:

```
1. 204 NoContent 
2. x-amz-version-id: {{versionID}} 
3. x-amz-delete-marker: true
```

## Uso de los AWS SDK
<a name="remove-delete-marker-examples-sdk"></a>

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 muestra cómo quitar un marcador de eliminación de un objeto y, por lo tanto, hacer que la versión no actual más reciente sea la versión actual del objeto.

```
def revive_object(bucket, object_key):
    """
    Revives a versioned object that was deleted by removing the object's active
    delete marker.
    A versioned object presents as deleted when its latest version is a delete marker.
    By removing the delete marker, we make the previous version the latest version
    and the object then presents as *not* deleted.

    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 revive.
    """
    # Get the latest version for the object.
    response = s3.meta.client.list_object_versions(
        Bucket=bucket.name, Prefix=object_key, MaxKeys=1
    )

    if "DeleteMarkers" in response:
        latest_version = response["DeleteMarkers"][0]
        if latest_version["IsLatest"]:
            logger.info(
                "Object %s was indeed deleted on %s. Let's revive it.",
                object_key,
                latest_version["LastModified"],
            )
            obj = bucket.Object(object_key)
            obj.Version(latest_version["VersionId"]).delete()
            logger.info(
                "Revived %s, active version is now %s  with body '%s'",
                object_key,
                obj.version_id,
                obj.get()["Body"].read(),
            )
        else:
            logger.warning(
                "Delete marker is not the latest version for %s!", object_key
            )
    elif "Versions" in response:
        logger.warning("Got an active version for %s, nothing to do.", object_key)
    else:
        logger.error("Couldn't get any version info for %s.", object_key)
```

------