ECS: Kontrol af S3-objektets eksistens

Summary: Sådan kontrolleres objektets eksistens i 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

Brug af HEAD til mere effektivt at kontrollere et objekts eksistens.

Objektliste er en iboende ineffektiv måde at kontrollere eksistensen af et bestemt objekt på. Indekssøgning er ikke kun relativt langsom for denne specifikke anmodning, men det kan også påvirke den samlede belastning og ydeevne.

Det er altid mere effektivt at anmode om et bestemt objekt end at anmode om et eller flere objekter, der matcher parametrene. Objektliste er en form for søgning, hvor distribuerede indekser skal forespørges.

Brug af HEAD på objektet er den bedste metode til at kontrollere, at det eksisterer. Med ECS-objekt-SDK gøres dette med GetObjectMetadataRequest.

 
Hvis objektet IKKE findes, kaster SDK følgende undtagelse på grund af et 404-fejlsvar:

 

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

 



Her er et eksempel på brug af GetObjectMetadataRequest, som bruges i getObjectMetadata-klientmetoden:

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

  
Hvis du bruger AWS java SDK, og objektet ikke findes, kaster SDK følgende undtagelse. 

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

 
Her er et eksempel på det:

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

 Kontroller, om objektet findes, for at afgøre, om putObject er nødvendigt.

Hvis du kontrollerer objektets eksistens for at afgøre, om putObject er nødvendigt, skal du overveje at bruge betingede metoder til PutObjectRequests:
 

withIfMatch() and withIfNoneMatch().

Begge disse metoder har brug for en objekt-etag-værdi og bruger overskrifterne "if-match","if-none-match" i PUT-anmodningen.
Der er også metoderne withIfUnmodifiedSince() og withIfModifiedSince(), som hver tager et datoobjekt.

Hvis etag eller md5 ikke er tilgængelige, skal det hentes med en GetObjectMetadataRequest.
Et effektivt alternativ ville være at bruge withIfUnmodifiedSince(), hvis datoen var gammel nok. 

SR med teknisk support fra ECS

Hvis der er bekymring for eksistensen af et objekt, skal du åbne en serviceanmodning hos ECS-supportteamet.
 

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.