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 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 e Exemplos de configurações do Ciclo de Vida do S3.

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. Para obter uma lista completa de métricas, consulte o Glossário de métricas da Lente de Armazenamento do S3.

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 Definição de preço do Amazon S3.

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

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

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.

  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

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
Como 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 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 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: