ECS: Sprawdzanie istnienia obiektu S3

Summary: Sprawdzanie istnienia obiektu w 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

Używanie HEAD do skuteczniejszego sprawdzania istnienia obiektu.

Lista obiektów jest z natury nieefektywnym sposobem sprawdzania istnienia określonego obiektu. Wyszukiwanie indeksu jest nie tylko stosunkowo powolne dla tego konkretnego żądania, ale może również mieć wpływ na ogólne obciążenie i wydajność.

Żądanie określonego obiektu jest zawsze bardziej wydajne niż żądanie jednego lub większej liczby obiektów pasujących do parametrów. Lista obiektów to forma wyszukiwania, w której należy wysyłać zapytania o indeksy rozproszone.

Użycie HEAD na obiekcie jest najlepszą metodą sprawdzania jego istnienia. W przypadku zestawu SDK obiektów ECS odbywa się to za pomocą polecenia GetObjectMetadataRequest.

 
Jeśli obiekt NIE istnieje, zestaw SDK zgłasza następujący wyjątek z powodu odpowiedzi na błąd 404:

 

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

 



Oto przykład użycia metody GetObjectMetadataRequest, która jest używana w metodzie klienta 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()); }

  
Jeśli używasz zestawu AWS Java SDK, a obiekt nie istnieje, zestaw SDK zgłasza następujący wyjątek. 

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

 
Oto jego przykład:

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

 Sprawdź, czy obiekt istnieje, aby określić, czy putObject jest potrzebny.

Jeśli sprawdzasz istnienie obiektu w celu określenia, czy putObject jest potrzebny, rozważ użycie metod warunkowych PutObjectRequests:
 

withIfMatch() and withIfNoneMatch().

Obie te metody wymagają wartości etag obiektu i używają nagłówków "if-match," if-none-match" w żądaniu PUT.
Istnieją również metody withIfUnmodifiedSince() i withIfModifiedSince(), z których każda przyjmuje obiekt Date.

Jeśli element etag lub md5 nie są dostępne, należy je pobrać za pomocą polecenia GetObjectMetadataRequest.
Efektywną alternatywą byłoby użycie metody withIfUnmodifiedSince(), jeśli data jest wystarczająco stara.

SR z pomocą techniczną ECS

Jeśli istnieje obawa co do istnienia obiektu, otwórz zgłoszenie serwisowe do zespołu pomocy technicznej 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.