

# Excluir versões de objetos de um bucket com versionamento habilitado
<a name="DeletingObjectVersions"></a>

Você pode excluir versões de objeto de buckets do Amazon S3 sempre que desejar. Você também pode definir regras de configuração de ciclo de vida de objetos que têm um ciclo de vida bem definido para solicitar que o Amazon S3 expire as versões atuais dos objetos ou que remova permanentemente as versões anteriores dos objetos. Quando o bucket tem versionamento habilitado ou suspenso, as ações da configuração do ciclo de vida funcionam do seguinte modo:
+ A `Expiration` ação se aplica à versão atual do objeto. Em vez de excluir a versão atual do objeto, o Amazon S3 a retém como uma versão desatualizada adicionando um *marcador de exclusão*, que se torna a versão atual.
+ A ação `NoncurrentVersionExpiration` aplica-se a versões antigas do objeto, e o Amazon S3 remove permanentemente essas versões do objeto. Você não pode recuperar objetos removidos permanentemente.

Para obter mais informações sobre o Ciclo de Vida do S3, consulte [Gerenciar o ciclo de vida dos objetos](object-lifecycle-mgmt.md) e [Exemplos de configurações do Ciclo de Vida do S3](lifecycle-configuration-examples.md).

Para ver quantas versões de objetos atuais e desatualizadas seus buckets têm, você pode usar as métricas da Lente de Armazenamento do Amazon S3. A Lente de Armazenamento do S3 é um recurso de análise de armazenamento em nuvem que você pode usar para obter visibilidade em toda a organização sobre o uso e a atividade do armazenamento de objetos. Para obter mais informações, consulte [Usar a Lente de Armazenamento do S3 para otimizar os custos do armazenamento](https://docs.aws.amazon.com/AmazonS3/latest/userguide/storage-lens-optimize-storage.html?icmpid=docs_s3_user_guide_DeletingObjectVersions.html). Para obter uma lista completa de métricas, consulte o [Glossário de métricas da Lente de Armazenamento do S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/storage_lens_metrics_glossary.html?icmpid=docs_s3_user_guide_replication.html).

**nota**  
 As taxas normais do Amazon S3 se aplicam a cada versão de um objeto armazenado e transferido, incluindo versões desatualizadas de objetos. Para obter mais informações, consulte [Preço do Amazon S3](https://aws.amazon.com/s3/pricing/). 

## Excluir casos de uso de solicitação
<a name="delete-request-use-cases"></a>

Uma solicitação `DELETE` tem os seguintes casos de uso:
+ Quando o versionamento está habilitado, um `DELETE` simples não pode excluir permanentemente um objeto. (Uma solicitação `DELETE` simples é uma solicitação que não especifica um ID de versão.) Em vez disso, o Amazon S3 insere um marcador de exclusão no bucket, que se torna a versão atual do objeto com um novo ID. 

  Quando você tenta um `GET` de um objeto cuja versão atual é um marcador de exclusão, o Amazon S3 se comporta como se o objeto tivesse sido excluído (mesmo que não tenha sido apagado) e retorna um erro 404. Para obter mais informações, consulte [Trabalhar com marcadores de exclusão](DeleteMarker.md).

  A figura a seguir mostra que uma simples solicitação `DELETE` não remove de fato o objeto especificado. Em vez disso, o Amazon S3 insere um marcador de exclusão.  
![\[Ilustração da inserção de um marcador de exclusão.\]](http://docs.aws.amazon.com/pt_br/AmazonS3/latest/userguide/images/versioning_DELETE_versioningEnabled.png)
+ Para excluir objetos com versões permanentemente, você deve usar `DELETE Object versionId`.

  A figura a seguir mostra que excluir uma versão do objeto especificada remove permanentemente esse objeto.  
![\[Diagrama que mostra como DELETE Object versionId exclui permanentemente uma versão específica do objeto.\]](http://docs.aws.amazon.com/pt_br/AmazonS3/latest/userguide/images/versioning_DELETE_versioningEnabled2.png)

## Para excluir versões de objeto
<a name="delete-object-version"></a>

Você pode excluir versões de objeto no Amazon S3 usando o console, os AWS SDKs, a API REST ou a AWS Command Line Interface.

### Usar o console do S3
<a name="deleting-object-versions"></a>

1. Faça login no Console de gerenciamento da AWS e abra o console do Amazon S3 em [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. Na lista **Buckets**, escolha o nome do bucket que contém o objeto.

1. Na lista **Objetos** , escolha o nome do objeto.

1. Escolha **Versões**.

   O Amazon S3 mostra todas as versões do objeto.

1. Marque a caixa de seleção ao lado do **ID da versão** para as versões que deseja recuperar permanentemente.

1. Escolha **Excluir**.

1. Em **Excluir objetos permanentemente? **, insira **permanently delete**.
**Atenção**  
Quando você exclui permanentemente uma versão de objeto, a ação não pode ser desfeita.

1. Escolha **Delete objects (Excluir objetos)**.

   O Amazon S3 exclui a versão do objeto.

### Uso da SDKs AWS
<a name="delete-obj-version-version-enabled-bucket-sdks"></a>

Para ver exemplos de exclusão de objetos usando os AWS SDKs para Java, .NET e PHP, consulte [Excluir objetos do Amazon S3](DeletingObjects.md). Os exemplos para excluir objetos em buckets não versionados e habilitados para versionamento são os mesmos. No entanto, para buckets habilitados para versionamento, o Amazon S3 atribui um número de versão. Caso contrário, o número de versão é nulo. 

Para obter informações sobre o uso de outros AWS SDKs, consulte o [Centro do Desenvolvedor da AWS](https://aws.amazon.com/code/). 

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

O exemplo de código Python a seguir exclui permanente um objeto versionado ao remover todas as suas versões.

```
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 da API REST
<a name="delete-obj-version-enabled-bucket-rest"></a>

**Como excluir uma versão específica de um objeto**
+ Em `DELETE`, especifique o ID da versão.

**Example — Excluir uma versão específica**  
O exemplo a seguir exclui a versão `UIORUnfnd89493jJFJ` do `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
```

### Como usar o AWS CLI
<a name="delete-obj-version-enabled-bucket-cli"></a>

O comando a seguir exclui um objeto chamado test.txt de um bucket chamado `amzn-s3-demo-bucket1`. Para remover uma versão específica de um objeto, você deve ser o proprietário do bucket e usar o sub-recurso de ID de versão.

```
aws s3api delete-object --bucket amzn-s3-demo-bucket1 --key test.txt --version-id versionID
```

Para obter mais informações 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) na *Referência de comandos da AWS CLI*.

Para obter mais informações sobre como excluir versões de objetos, consulte os seguintes tópicos:
+ [Trabalhar com marcadores de exclusão](DeleteMarker.md)
+ [Como remover marcadores de exclusão para tornar uma versão mais antiga atual](ManagingDelMarkers.md#RemDelMarker)
+ [Excluir um objeto de um bucket com exclusão de MFA habilitada](UsingMFADelete.md)