ECS : Vérification de l’existence de l’objet S3

Summary: Comment vérifier l’existence d’un objet dans 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

Utilisation de la commande HEAD pour vérifier plus efficacement l’existence d’un objet.

La liste d’objets est un moyen intrinsèquement inefficace de vérifier l’existence d’un objet spécifique. La recherche d’index est non seulement relativement lente pour cette demande spécifique, mais elle peut également affecter la charge et les performances globales.

La demande d’un objet spécifique est toujours plus efficace que la demande d’un ou de plusieurs objets correspondant aux paramètres. La liste d’objets est une forme de recherche dans laquelle les index distribués doivent être interrogés.

L’utilisation de HEAD sur l’objet est la meilleure méthode pour vérifier qu’il existe. Avec le SDK d’objets ECS, cette opération s’effectue à l’aide de GetObjectMetadataRequest.

 
Si l’objet n’existe PAS, le Kit de développement logiciel (SDK) lève l’exception suivante en raison d’une réponse d’erreur 404 :

 

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

 



Voici un exemple d’utilisation de GetObjectMetadataRequest qui est utilisé dans la méthode du client 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()); }

  
Si vous utilisez le kit SDK Java AWS et que l’objet n’existe pas, le SDK lève l’exception suivante. 

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

 
En voici un exemple :

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()); }

 Vérifiez si l’objet existe pour déterminer si putObject est nécessaire.

Si vous vérifiez l’existence de l’objet pour déterminer si putObject est nécessaire, envisagez d’utiliser les méthodes conditionnelles PutObjectRequests :
 

withIfMatch() and withIfNoneMatch().

Ces deux méthodes nécessitent une valeur etag d’objet et utilisent les en-têtes « if-match »,« if-none-match » dans la demande PUT.
Il y a aussi les méthodes withIfUnmodifiedSince() et withIfModifiedSince() qui prennent chacune un objet Date.

Si etag ou md5 ne sont pas disponibles, il faut les récupérer à l’aide d’un objet GetObjectMetadataRequest.
Une alternative efficace serait d’utiliser withIfUnmodifiedSince() si la date était assez ancienne. 

Demande de service avec support technique ECS

Si vous avez des doutes concernant l’existence d’un objet, ouvrez une demande de service auprès de l’équipe de support 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.