ECS: Kontrola existence objektu S3

Summary: Jak zkontrolovat existenci objektu v 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

Použití HEAD k efektivnější kontrole existence objektu.

Výpis objektů je ze své podstaty neefektivní způsob kontroly existence konkrétního objektu. Vyhledávání v indexu je pro tento konkrétní požadavek nejen relativně pomalé, ale může mít také vliv na celkové zatížení a výkon.

Požadavek na konkrétní objekt je vždy efektivnější než požadavek na jeden nebo více objektů, které odpovídají parametrům. Výpis objektů je forma vyhledávání, kde je nutné dotazovat distribuované indexy.

Použití HEAD na objekt je nejlepší metodou, jak zkontrolovat, zda existuje. U sady ECS Object SDK se to provádí pomocí GetObjectMetadataRequest.

 
Pokud objekt neexistuje, sada SDK vyvolá následující výjimku kvůli chybové odpovědi 404:

 

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

 



Tady je příklad použití GetObjectMetadataRequest , který se používá v getObjectMetadata klientské metodě:

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

  
Pokud používáte sadu AWS Java SDK a objekt neexistuje, sada SDK vyvolá následující výjimku. 

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

 
Zde je příklad:

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

 Zkontrolujte, zda objekt existuje, a zjistěte, zda je potřeba putObject.

Pokud kontrolujete existenci objektu, abyste zjistili, zda je potřeba putObject, zvažte použití podmíněných metod PutObjectRequests:
 

withIfMatch() and withIfNoneMatch().

Obě tyto metody potřebují hodnotu object etag a používají hlavičky "if-match","if-none-match" v požadavku PUT.
Existují také metody withIfUnmodifiedSince() a withIfModifiedSince(), z nichž každá přebírá objekt Date.

Pokud značka etag nebo md5 nejsou k dispozici, je potřeba ji načíst pomocí GetObjectMetadataRequest.
Efektivní alternativou by bylo použít withIfUnmodifiedSince(), pokud je datum dostatečně staré. 

Servisní služby s technickou podporou ECS

Pokud máte obavy ohledně existence objektu, otevřete servisní požadavek u týmu podpory ECS.
 

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.