ECS: Überprüfen der Existenz eines S3-Objekts

Summary: So überprüfen Sie die Objektexistenz in 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

Verwenden von HEAD zur effizienteren Überprüfung der Existenz eines Objekts.

Die Objektauflistung ist eine ineffiziente Methode, um das Vorhandensein eines bestimmten Objekts zu überprüfen. Die Indexsuche ist nicht nur für diese spezifische Anforderung relativ langsam, sondern kann sich auch auf die Gesamtlast und -leistung auswirken.

Das Anfordern eines bestimmten Objekts ist immer effizienter als das Anfordern eines oder mehrerer Objekte, die den Parametern entsprechen. Die Objektauflistung ist eine Form der Suche, bei der verteilte Indizes abgefragt werden müssen.

Die Verwendung von HEAD für das Objekt ist die beste Methode, um zu überprüfen, ob es existiert. Beim ECS-Objekt-SDK erfolgt dies mit GetObjectMetadataRequest.

 
Wenn das Objekt NICHT vorhanden ist, löst das SDK aufgrund einer 404-Fehlerantwort die folgende Ausnahme aus:

 

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

 



Hier ist ein Beispiel für die Verwendung von GetObjectMetadataRequest, die in der getObjectMetadata-Clientmethode verwendet wird:

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

  
Wenn das AWS Java SDK verwendet wird und das Objekt nicht vorhanden ist, löst das SDK die folgende Ausnahme aus. 

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

 
Hier ist ein Beispiel dafür:

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

 Überprüfen Sie, ob das Objekt vorhanden ist, um festzustellen, ob putObject benötigt wird.

Wenn Sie überprüfen, ob ein Objekt vorhanden ist, um festzustellen, ob putObject benötigt wird, sollten Sie die Verwendung der bedingten PutObjectRequests-Methoden in Betracht ziehen:
 

withIfMatch() and withIfNoneMatch().

Beide Methoden benötigen einen Objekt-etag-Wert und verwenden die Header "if-match","if-none-match" in der PUT-Anforderung.
Es gibt auch die Methoden withIfUnmodifiedSince() und withIfModifiedSince(), die jeweils ein Date-Objekt verwenden.

Wenn etag oder md5 nicht verfügbar sind, müsste es mit einem GetObjectMetadataRequest abgerufen werden.
Eine effiziente Alternative wäre die Verwendung von withIfUnmodifiedSince(), wenn das Datum alt genug ist. 

SR mit technischem ECS-Support

Wenn Bedenken hinsichtlich der Existenz eines Objekts bestehen, öffnen Sie einen Service-Request beim 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.