ECS: Verifica dell'esistenza dell'oggetto S3

Summary: Come verificare l'esistenza di oggetti all'interno di 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

Utilizzo di HEAD per controllare in modo più efficiente l'esistenza di un oggetto.

L'elenco degli oggetti è un modo intrinsecamente inefficiente di verificare l'esistenza di un oggetto specifico. La ricerca nell'indice non solo è relativamente lenta per questa richiesta specifica, ma può anche influire sul carico e sulle prestazioni complessivi.

La richiesta di un oggetto specifico è sempre più efficiente rispetto alla richiesta di uno o più oggetti che corrispondono ai parametri. L'elenco degli oggetti è una forma di ricerca in cui è necessario eseguire query sugli indici distribuiti.

L'uso di HEAD sull'oggetto è il metodo migliore per verificarne l'esistenza. Con l'SDK dell'oggetto ECS, questa operazione viene eseguita con GetObjectMetadataRequest.

 
Se l'oggetto NON esiste, l'SDK genera la seguente eccezione a causa di una risposta di errore 404:

 

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

 



Di seguito è riportato un esempio di utilizzo di GetObjectMetadataRequest utilizzato nel metodo client 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()); }

  
Se si utilizza l'SDK Java AWS e l'oggetto non esiste, l'SDK genera la seguente eccezione. 

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

 
Ecco un esempio:

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

 Verificare se l'oggetto esiste per determinare se putObject è necessario.

Se si verifica l'esistenza dell'oggetto per determinare se putObject è necessario, prendere in considerazione l'utilizzo dei metodi condizionali PutObjectRequests:
 

withIfMatch() and withIfNoneMatch().

Entrambi questi metodi necessitano di un valore etag dell'oggetto e utilizzano le intestazioni "if-match," if-none-match" nella richiesta PUT.
Ci sono anche i metodi withIfUnmodifiedSince() e withIfModifiedSince() che accettano ciascuno un oggetto Date.

Se etag o md5 non sono disponibili, è necessario recuperarli con GetObjectMetadataRequest.
Un'alternativa efficiente sarebbe quella di usare withIfUnmodifiedSince() se la data è abbastanza vecchia.

SR con supporto tecnico ECS

In caso di dubbi sull'esistenza di un oggetto, aprire una Service Request con il team di supporto 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.