ECS: Verificando a existência do objeto S3

Summary: Como verificar a existência do objeto no s3.

This article applies to This article does not apply to This article is not tied to any specific product. Not all product versions are identified in this article.

Instructions

Usando o HEAD para verificar com mais eficiência a existência de um objeto.

A listagem de objetos é uma maneira inerentemente ineficiente de verificar a existência de um objeto específico. A pesquisa de índice não só é relativamente lenta para essa solicitação específica, mas também pode afetar a carga e o desempenho gerais.

Solicitar um objeto específico é sempre mais eficiente do que solicitar um ou mais objetos que correspondam aos parâmetros. A listagem de objetos é uma forma de pesquisa em que os índices distribuídos devem ser consultados.

Usar o HEAD no objeto é o melhor método para verificar se ele existe. Com o SDK de objeto do ECS, isso é feito com o GetObjectMetadataRequest.

 
Se o objeto NÃO existir, o SDK lançará a seguinte exceção devido a uma resposta de erro 404:

 

Exception in thread "main" com.emc.object.s3.S3Exception: Not Found

 



Aqui está um exemplo de uso do GetObjectMetadataRequest que é usado no método de cliente getObjectMetadata:

try { GetObjectMetadataRequest gom = new GetObjectMetadataRequest(<bucket>, <key>); S3ObjectMetadata om = s3.getObjectMetadata(gom); System.out.println("etag: " + om.getETag()); System.out.println("last modified: " + om.getLastModified().toString()); } catch(com.emc.object.s3.S3Exception e) { System.out.println("What happened: " + e.getMessage()); }

  
Se estiver usando o SDK do Java AWS e o objeto não existir, o SDK lançará a seguinte exceção. 

com.amazonaws.services.s3.model.AmazonS3Exception: Not Found

 
Aqui está um exemplo disso:

try { GetObjectMetadataRequest gom = new GetObjectMetadataRequest(AWSS3Factory.S3_BUCKET, key); s3.getObjectMetadata(gom); } catch(com.amazonaws.services.s3.model.AmazonS3Exception e) { System.out.println("What happened: " + e.getMessage()); }

 Verifique se o objeto existe para determinar se putObject é necessário.

Se estiver verificando a existência do objeto para determinar se putObject é necessário, considere o uso de métodos condicionais PutObjectRequests:
 

withIfMatch() and withIfNoneMatch().

Ambos os métodos precisam de um valor de etag de objeto e usam os cabeçalhos "if-match", " if-none-match" na solicitação PUT.
Há também os métodos withIfUnmodifiedSince() e withIfModifiedSince() que cada um usa um objeto Date.

Se a etag ou md5 não estiverem disponíveis, será necessário recuperá-la com um GetObjectMetadataRequest.
Uma alternativa eficiente seria usar o withIfUnmodifiedSince() se a Data fosse velha o suficiente.

SR com suporte técnico do ECS

Se houver uma dúvida sobre a existência de um objeto, abra um chamado com a equipe de suporte do ECS.
 

Affected Products

Elastic Cloud Storage

Products

Elastic Cloud Storage
Article Properties
Article Number: 000014759
Article Type: How To
Last Modified: 22 May 2025
Version:  4
Find answers to your questions from other Dell users
Support Services
Check if your device is covered by Support Services.