ECS: Kontrollerar förekomsten av S3-objekt

Summary: Så här kontrollerar du objektets existens 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

Använda HEAD för att mer effektivt kontrollera ett objekts existens.

Objektlistning är i sig ett ineffektivt sätt att kontrollera om det finns ett specifikt objekt. Indexsökning är inte bara relativt långsam för den här specifika begäran, utan kan också påverka den övergripande belastningen och prestandan.

Att begära ett specifikt objekt är alltid mer effektivt än att begära ett eller flera objekt som matchar parametrar. Objektlistning är en form av sökning där distribuerade index måste efterfrågas.

Att använda HEAD på objektet är den bästa metoden för att kontrollera att det finns. Med ECS-objekt-SDK görs detta med GetObjectMetadataRequest.

 
Om objektet INTE finns genererar SDK:n följande undantag på grund av ett 404-felsvar:

 

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

 



Här är ett exempel på hur du använder GetObjectMetadataRequest som används i klientmetoden 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()); }

  
Om du använder AWS java SDK och objektet inte finns genererar SDK:n följande undantag. 

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

 
Här är ett exempel 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()); }

 Kontrollera om objektet finns för att avgöra om putObject behövs.

Om du söker efter objektets existens för att avgöra om putObject behövs bör du överväga att använda villkorsbaserade metoder för PutObjectRequests:
 

withIfMatch() and withIfNoneMatch().

Båda dessa metoder behöver ett object etag-värde och använder rubrikerna "if-match", " if-none-match" i PUT-begäran.
Det finns också metoderna withIfUnmodifiedSince() och withIfModifiedSince() som var och en tar ett Date-objekt.

Om etag eller md5 inte är tillgängliga måste den hämtas med en GetObjectMetadataRequest.
Ett effektivt alternativ skulle vara att använda withIfUnmodifiedSince() om datumet var tillräckligt gammalt.

SR med teknisk ECS-support

Om det finns problem med förekomsten av ett objekt öppnar du en tjänstebegäran 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.