Trabalhar com marcadores de exclusão
Um marcador de exclusão no Amazon S3 é um espaço reservado (ou marcador) para um objeto com versões que foi especificado em uma solicitação DELETE
simples. Uma solicitação DELETE
simples é uma solicitação que não especifica um ID de versão. Como o objeto está em um bucket com versionamento habilitado, o objeto não é excluído. Mas o marcador de exclusão faz com que o Amazon S3 se comporte como se o objeto tivesse sido excluído. É possível usar a chamada de API DELETE
do Amazon S3 em um marcador de exclusão. Para isso, será necessário fazer a solicitação DELETE
usando um usuário ou um perfil do AWS Identity and Access Management (IAM) com as permissões adequadas.
Um marcador de exclusão tem um nome de chave (ou chave) e um ID de versão como qualquer outro objeto. Contudo, um marcador de exclusão difere de outros objetos nas seguintes maneiras:
-
Um marcador de exclusão não tem dados associados a ele.
-
Um marcador de exclusão não está associado a um valor da lista de controle de acesso (ACL).
-
Se você emitir uma solicitação
GET
para um marcador de exclusão, a solicitaçãoGET
não recuperará nada porque um marcador de exclusão não tem dados. Especificamente, quando a solicitaçãoGET
não especifica umversionId
, você recebe um erro 404 (não encontrado).
Os marcadores de exclusão acumulam uma cobrança mínima para armazenamento no Amazon S3. O tamanho de armazenamento de um marcador de exclusão é igual ao tamanho do nome da chave do marcador de exclusão. Um nome de chave é uma sequência de caracteres Unicode. A codificação UTF-8 para o nome da chave adiciona de 1 a 4 bytes de armazenamento ao bucket para cada caractere no nome. Os marcadores de exclusão são armazenados na classe de armazenamento S3 Standard.
Se você quiser descobrir quantos marcadores de exclusão você tem e em qual classe de armazenamento eles estão armazenados, use a Lente de Armazenamento do Amazon S3. Para ter mais informações, consulte Avaliação de sua atividade de armazenamento e uso com a Lente de Armazenamento do Amazon S3 e Glossário de métricas de lente de armazenamento do Amazon S3.
Para obter mais informações sobre nomes de chave, consulte Nomear objetos do Amazon S3. Para obter mais informações sobre exclusão de um marcador de exclusão, consulte Gerenciamento de marcadores de exclusão.
Somente o Amazon S3 pode criar e excluir um marcador de exclusão, e ele faz isso sempre que você envia uma solicitação DeleteObject
em um objeto em um bucket com versionamento habilitado ou suspenso. O objeto especificado na solicitação DELETE
não é de fato excluído. Em vez disso, o marcador de exclusão torna-se a versão atual do objeto. O nome de chave (ou chave) do objeto torna-se a chave do marcador de exclusão.
Ao obter um objeto sem especificar um versionId
na solicitação, se a versão atual for um marcador de exclusão, o Amazon S3 responderá com o seguinte:
-
Um erro 404 (não encontrado)
-
Um cabeçalho de resposta,
x-amz-delete-marker: true
Ao obter um objeto especificando um versionId
na solicitação, se a versão especificada for um marcador de exclusão, o Amazon S3 responderá com o seguinte:
-
Um erro 405 (Método Não Permitido)
-
Um cabeçalho de resposta,
x-amz-delete-marker: true
-
Um cabeçalho de resposta,
Last-Modified: timestamp
(somente ao usar as operações de API HeadObject ou GetObject)
O cabeçalho de resposta x-amz-delete-marker: true
mostra que o objeto acessado era um marcador de exclusão. Esse cabeçalho de resposta nunca retorna false
, porque quando o valor é false
, a versão atual ou especificada do objeto não é um marcador de exclusão.
O cabeçalho de resposta Last-Modified
fornece a hora de criação dos marcadores de exclusão.
A figura a seguir mostra como uma chamada de API GetObject
em um objeto, cuja versão atual é um marcador de exclusão, responde com um erro 404 (não encontrado), e o cabeçalho da resposta inclui x-amz-delete-marker: true
.
![Ilustração de uma chamada GetObject para um marcador de exclusão que retorna um erro 404 (não encontrado).](images/versioning_DELETE_NoObjectFound.png)
Se você fizer uma chamada GetObject
em um objeto especificando um versionId
na solicitação e se a versão especificada for um marcador de exclusão, o Amazon S3 responderá com um erro 405 (método não permitido) e os cabeçalhos de resposta incluirão x-amz-delete-marker: true
e Last-Modified: timestamp
.
![Ilustração de uma chamada GetObject para um marcador de exclusão que retorna um erro 405 (método não permitido).](images/versioning_DELETE_NoObjectFound_405.png)
O único modo de listar marcadores de exclusão (e outras versões de um objeto) é usando o versions
sub-recurso em uma solicitação ListObjectVersions. A figura a seguir mostra que uma solicitação ListObjectsV2 ou ListObjects não retorna objetos cuja versão atual é um marcador de exclusão.
![Ilustração que mostra como uma chamada ListObjectsV2 ou ListObjects não retorna nenhum marcador de exclusão.](images/versioning_GETBucketwithDeleteMarkers.png)