Excluir versões de objetos de um bucket com versionamento habilitado - Amazon Simple Storage Service

Excluir versões de objetos de um bucket com versionamento habilitado

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 seu bucket tem versionamento ativado 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, consulte Gerenciando seu ciclo de vida de armazenamento.

Excluir casos de uso de solicitação

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

    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.

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

Para excluir versões de objeto

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.

  1. Faça login no AWS Management Console e abra o console do Amazon S3 em https://console.aws.amazon.com/s3/.

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

  3. Na lista Objetos , escolha o nome do objeto.

  4. Escolha Versões.

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

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

  6. Escolha Delete (Excluir).

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

  8. Escolha Delete objects (Excluir objetos).

    O Amazon S3 exclui a versão do objeto.

Para ver exemplos de exclusão de objetos usando os AWS SDKs para Java, o .NET e o PHP, consulte Excluir objetos do Amazon S3. 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.

Python

Para obter instruções sobre como criar e testar um exemplo funcional, consulte Usar a AWS SDK for Python (Boto).

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
Para excluir uma versão específica de um objeto
  • Em DELETE, especifique o ID da versão.

exemplo — Excluir uma versão específica

O exemplo a seguir exclui a versão UIORUnfnd89493jJFJ do 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

O comando a seguir exclui um objeto chamado test.txt de um bucket denominado DOC-EXAMPLE-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 DOC-EXAMPLE-BUCKET1 --key test.txt --version-id versionID

Para obter mais informações sobre delete-object, consulte delete-object 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: