ECS: Kontrollere S3-objektets eksistens

Summary: Hvordan sjekke objekteksistensen 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

Bruke HEAD for å kontrollere et objekts eksistens mer effektivt.

Objektoppføring er en iboende ineffektiv måte å sjekke om det finnes et bestemt objekt. Indekssøk er ikke bare relativt tregt for denne spesifikke forespørselen, men det kan også påvirke total belastning og ytelse.

Å be om et bestemt objekt er alltid mer effektivt enn å be om ett eller flere objekter som samsvarer med parametere. Objektoppføring er en form for søk der distribuerte indekser må spørres.

Å bruke HEAD på objektet er den beste metoden for å sjekke at det eksisterer. Med ECS object SDK gjøres dette med GetObjectMetadataRequest.

 
Hvis objektet IKKE finnes, genererer SDK følgende unntak på grunn av et 404-feilsvar:

 

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

 



Her er et eksempel på bruk av GetObjectMetadataRequest som brukes 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 bruker AWS Java SDK og objektet ikke eksisterer, kaster SDK følgende unntak. 

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 finnes for å avgjøre om putObject er nødvendig.

Hvis du kontrollerer objekteksistensen for å avgjøre om putObject er nødvendig, bør du vurdere å bruke betingede metoder for PutObjectRequests:
 

withIfMatch() and withIfNoneMatch().

Begge disse metodene trenger en objekt-etag-verdi og bruker overskriftene "if-match","if-none-match" i PUT-forespørselen.
Det finnes også metodene withIfUnmodifiedSince() og withIfModifiedSince() som hver tar et Date-objekt.

Hvis etag eller md5 ikke er tilgjengelige, må den hente den med en GetObjectMetadataRequest.
Et effektivt alternativ ville være å bruke withIfUnmodifiedSince() hvis datoen var gammel nok. 

SR med ECS teknisk støtte

Hvis det er bekymring for eksistensen av et objekt, kan du åpne en serviceforespørsel med ECS-støtteteamet.
 

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.