Gerenciamento de marcadores de exclusão - Amazon Simple Storage Service

Gerenciamento de marcadores de exclusão

Como configurar o ciclo de vida para limpar marcadores de exclusão expirados automaticamente

Em um marcador de exclusão de objeto expirado, todas as versões de objeto são excluídas e resta apenas um único marcador de exclusão. Se a configuração de ciclo de vida estiver definida para excluir versões atuais ou a ação ExpiredObjectDeleteMarker estiver explicitamente definida, o Amazon S3 removerá o marcador de exclusão do objeto expirado. Para ver um exemplo, consulte Remover marcadores de exclusão de objetos expirados em um bucket com versionamento habilitado.

Como remover marcadores de exclusão para tornar uma versão mais antiga atual

Quando você exclui um objeto em um bucket ativado para versionamento, todas as versões permanecem no bucket, e o Amazon S3 cria um marcador de exclusão para o objeto. Para cancelar a exclusão do objeto, você deve excluir esse marcador de exclusão. Para obter mais informações sobre versionamento e marcadores de exclusão, consulte Reter várias versões de objetos com o Versionamento do S3.

Para excluir permanentemente um marcador de exclusão, inclua seu respectivo ID de versão em uma solicitação DeleteObject versionId. A figura a seguir mostra como uma solicitação DeleteObject versionId simples remove, permanentemente, um marcador de exclusão.

Ilustração da exclusão de um marcador de exclusão usando o respectivo ID da versão.

O efeito da remoção do marcador de exclusão é que uma simples solicitação GET não recuperará o ID da versão atual do objeto (121212).

nota

Se você usar uma solicitação DeleteObject em que a versão atual seja um marcador de exclusão (sem especificar o ID da versão do marcador de exclusão), o Amazon S3 não excluirá o marcador de exclusão, mas outro marcador de exclusão PUTs.

Para excluir um marcador de exclusão com um ID de versão NULL, você deve aprovar o NULL como o ID da versão na solicitação DeleteObject. A figura a seguir mostra como uma simples solicitação DeleteObject feita sem um ID de versão em que a versão atual é um marcador de exclusão não remove nada. Em vez disso, ela adiciona um marcador de exclusão extra com um ID de versão exclusivo (7498372).

Ilustração da exclusão de um marcador de exclusão usando um ID de versão NULL.

Use as etapas a seguir para recuperar objetos excluídos que não são pastas do seu bucket do S3, incluindo objetos que estão dentro dessas pastas.

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

  3. Para ver uma lista das versões dos objetos no bucket, escolha a opção List versions (Listar versões). Você conseguirá ver os marcadores de exclusão dos objetos excluídos.

  4. Para cancelar a exclusão de um objeto, você deve excluir o marcador de exclusão. Marque a caixa de seleção ao lado do delete marker (marcador de exclusão) do objeto a ser recuperado e escolha Delete (excluir).

  5. Confirme a exclusão na página Delete objects (Excluir objetos).

    1. Para a opção Permanently delete objects? (Excluir objetos permanentemente?), insira permanently delete.

    2. Escolha Delete objects (Excluir objetos).

nota

Você não pode usar o console do Amazon S3 para cancelar a exclusão de pastas. Você deve usar a AWS CLI ou o SDK. Para ver exemplos, consulte Como faço para recuperar um objeto do Amazon S3 que foi excluído em um bucket habilitado para versionamento? na Central de Conhecimento da AWS.

Para remover permanentemente um marcador de exclusão
  1. Defina versionId como o ID da versão do marcador de exclusão que você deseja remover.

  2. Envie uma solicitação DELETE Object versionId.

exemplo — Remover um marcador de exclusão

O exemplo a seguir remove o marcador de exclusão de photo.gif com versão 4857693.

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

Quando você exclui um marcador de exclusão, o Amazon S3 inclui o seguinte na resposta:

204 NoContent x-amz-version-id: versionID x-amz-delete-marker: true

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 demonstra como remover um marcador de exclusão de um objeto e, portanto, transforma a versão não atual mais recente na versão atual do 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)