

# Trabalhar com objetos em um bucket com versionamento suspenso
<a name="VersionSuspendedBehavior"></a>

No Amazon S3, você pode suspender o versionamento para parar de ter novas versões do mesmo objeto em um bucket. Você pode fazer isso porque você quer apenas uma única versão de um objeto em um bucket. Ou talvez você não queira acumular cobranças para várias versões. 

Quando você suspende o versionamento, os objetos existentes em seu bucket não são alterados. O que muda é como o Amazon S3 trata os objetos em solicitações futuras. Os tópicos nesta seção explicam várias operações de objeto em um bucket suspenso de versão, incluindo adição, recuperação e exclusão de objetos.

Para obter mais informações sobre o S3 Versioning, consulte [Reter várias versões de objetos com o Versionamento do S3](Versioning.md). Para obter mais informações sobre como recuperar as versões de um objeto, consulte [Recuperando versões de objeto de um bucket habilitado para versionamento](RetrievingObjectVersions.md).

**Topics**
+ [Adicionar objetos a buckets com versionamento suspenso](AddingObjectstoVersionSuspendedBuckets.md)
+ [Recuperar objetos de buckets com versionamento suspenso](RetrievingObjectsfromVersioningSuspendedBuckets.md)
+ [Excluir objetos de buckets com versionamento suspenso](DeletingObjectsfromVersioningSuspendedBuckets.md)

# Adicionar objetos a buckets com versionamento suspenso
<a name="AddingObjectstoVersionSuspendedBuckets"></a>

Você pode adicionar objetos a buckets com versionamento suspenso no Amazon S3 para criar o objeto com um ID de versão nulo ou substituir qualquer versão de objeto por um ID de versão correspondente.

Depois que você suspender o versionamento em um bucket, o Amazon S3 adicionará automaticamente um ID de versão `null` a cada objeto subsequente armazenado depois disso (usando `PUT`, `POST` ou `CopyObject`) nesse bucket.

A figura a seguir mostra como o Amazon S3 adiciona um ID de versão `null` a cada objeto quando ele é adicionado a um bucket com versionamento suspenso.

![\[Amazon S3 adicionando o ID de versão null a uma representação gráfica do objeto.\]](http://docs.aws.amazon.com/pt_br/AmazonS3/latest/userguide/images/versioning_PUT_versionSuspended.png)


Se um versão nula já existir no bucket e você adicionar outro objeto com a mesma chave, o objeto adicionado substituirá a versão original nula. 

Se existirem objetos com versões no bucket, a versão que você usa no `PUT` torna-se a versão atual do objeto. A figura a seguir mostra como a adição de um objeto a um bucket que contém objetos com versões não substitui o objeto já existente no bucket. 

Neste caso, a versão 111111 já estava no bucket. O Amazon S3 anexa o ID de versão nula ao objeto que está sendo adicionado e armazena o objeto no bucket. A versão 111111 não é substituída.

![\[Amazon S3 adicionando o ID de versão null a um objeto sem sobrescrever a representação gráfica da versão 111111.\]](http://docs.aws.amazon.com/pt_br/AmazonS3/latest/userguide/images/versioning_PUT_versionSuspended3.png)


Se uma versão nula já existir em um bucket, a versão nula será substituída, como mostrado na figura a seguir.

![\[Amazon S3 adicionando o ID de versão null a um objeto enquanto sobrescreve a representação gráfica do conteúdo original.\]](http://docs.aws.amazon.com/pt_br/AmazonS3/latest/userguide/images/versioning_PUT_versionSuspended4.png)


Embora a chave e o ID (`null`) da versão nula sejam iguais antes e depois de `PUT`, o conteúdo da versão nula originalmente armazenado no bucket é substituído pelo conteúdo do objeto `PUT` no bucket.

# Recuperar objetos de buckets com versionamento suspenso
<a name="RetrievingObjectsfromVersioningSuspendedBuckets"></a>

Uma solicitação `GET Object` retorna a versão atual de um objeto sempre independentemente de você ter ou não ativado o versionamento de um bucket. A figura a seguir mostra como um `GET` simples retorna a versão atual de um objeto.

![\[Ilustração que mostra como um GET simples retorna a versão atual do objeto.\]](http://docs.aws.amazon.com/pt_br/AmazonS3/latest/userguide/images/versioning_GET_suspended.png)


# Excluir objetos de buckets com versionamento suspenso
<a name="DeletingObjectsfromVersioningSuspendedBuckets"></a>

Você pode excluir objetos de buckets com versionamento suspenso para remover um objeto com um ID de versão nulo.

Se o versionamento for suspenso para um bucket, uma `DELETE` solicitação:
+ Pode remover apenas um objeto cujo ID de versão seja `null`.
+ Não removerá nada se não existir uma versão nula do objeto no bucket.
+ Insere um marcador de exclusão no bucket.

Se o versionamento do bucket for suspenso, a operação removerá o objeto que tem um `versionId` nulo. Quando existe um ID de versão, o Amazon S3 insere um marcador de exclusão que se torna a versão atual do objeto. A figura a seguir mostra como um `DELETE` simples remove uma versão nula, e o Amazon S3 insere um marcador de exclusão em seu lugar com um ID de versão `null`.

![\[Ilustração de uma exclusão simples para remover um objeto com um ID de versão NULL.\]](http://docs.aws.amazon.com/pt_br/AmazonS3/latest/userguide/images/versioning_DELETE_versioningSuspended.png)


Para excluir permanentemente um objeto que tenha um `versionId`, você deve incluir o `versionId` do objeto na solicitação. Como um marcador de exclusão não contém nenhum conteúdo, você perderá o conteúdo da versão `null` quando um marcador de exclusão a substituir.

A figura a seguir mostra um bucket que não tem uma versão nula. Nesse caso, `DELETE` não remove nada. Em vez disso, o Amazon S3 apenas 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_versioningSuspendedNoNull.png)


Mesmo em um bucket com versionamento suspenso, o proprietário do bucket pode excluir permanentemente uma versão especificada incluindo o ID da versão na solicitação `DELETE`, a menos que as permissões para a solicitação `DELETE` tiverem sido explicitamente negadas. Por exemplo, para negar a exclusão de qualquer objeto que tenha um ID de versão `null`, é necessário negar explicitamente as permissões `s3:DeleteObject` e `s3:DeleteObjectVersions`.

A figura a seguir mostra que excluir uma versão do objeto especificada remove permanentemente essa versão do objeto. Apenas o proprietário do bucket pode excluir uma versão de objeto especificada.

![\[Ilustração da exclusão permanente de um objeto usando um ID de versão especificado.\]](http://docs.aws.amazon.com/pt_br/AmazonS3/latest/userguide/images/versioning_DELETE_versioningEnabled2.png)
