ECS: Controle van het bestaan van S3-object

Summary: Hoe het bestaan van objecten binnen s3 te controleren.

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

HEAD gebruiken om het bestaan van een object efficiënter te controleren.

Objectnotering is een inherent inefficiënte manier om te controleren op het bestaan van een specifiek object. Het zoeken naar indexen is niet alleen relatief traag voor dit specifieke verzoek, maar kan ook van invloed zijn op de algehele belasting en prestaties.

Het aanvragen van een specifiek object is altijd efficiënter dan het aanvragen van een of meerdere objecten die overeenkomen met parameters. Objectvermelding is een zoekvorm waarbij gedistribueerde indexen moeten worden opgevraagd.

Het gebruik van HEAD op het object is de beste methode om te controleren of het bestaat. Met ECS object SDK wordt dit gedaan met de GetObjectMetadataRequest.

 
Als het object NIET bestaat, genereert de SDK de volgende uitzondering vanwege een 404-foutreactie:

 

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

 



Hier volgt een voorbeeld van het gebruik van de GetObjectMetadataRequest die wordt gebruikt in de clientmethode 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()); }

  
Als u de AWS Java SDK gebruikt en het object niet bestaat, genereert de SDK de volgende uitzondering. 

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

 
Hier is er een voorbeeld van:

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

 Controleer of het object bestaat om te bepalen of putObject nodig is.

Als u controleert op objectbestaan om te bepalen of putObject nodig is, kunt u overwegen de voorwaardelijke methoden PutObjectRequests te gebruiken:
 

withIfMatch() and withIfNoneMatch().

Beide methoden hebben een object-etagwaarde nodig en gebruiken de headers "if-match", " if-none-match" in de PUT-aanvraag.
Er zijn ook de methoden withIfUnmodifiedSince() en withIfModifiedSince() die elk een datumobject nodig hebben.

Als de etag of md5 niet beschikbaar zijn, moet deze worden opgehaald met een GetObjectMetadataRequest.
Een efficiënt alternatief zou zijn om de withIfUnmodifiedSince() te gebruiken als de datum oud genoeg was.

SR met technische ondersteuning voor ECS

Als er een probleem is met het bestaan van een object, opent u een serviceaanvraag bij het ECS-supportteam.
 

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.