Ottenimento delle informazioni sullo stato della replica - Amazon Simple Storage Service

Ottenimento delle informazioni sullo stato della replica

Lo stato della replica consente di determinare lo stato corrente di un oggetto da replicare. Lo stato della replica di un oggetto di origine restituirà PENDING, COMPLETED o FAILED. Lo stato della replica di una replica restituirà REPLICA.

Panoramica dello stato della replica

Nella replica, esistono un bucket di origine in cui si configura la replica e un bucket di destinazione in cui Amazon S3 replica gli oggetti. Quando richiedi un oggetto (tramite l'oggetto GET) o i metadati di un oggetto (tramite l'oggetto HEAD) da questi bucket, Amazon S3 restituisce l'intestazione x-amz-replication-status nella risposta:

  • Quando richiedi un oggetto dal bucket di origine, Amazon S3 restituisce l'intestazione x-amz-replication-status se l'oggetto nella richiesta è idoneo per la replica.

    Supponi, ad esempio, che nella configurazione di replica venga specificato il prefisso di oggetto TaxDocs che indica ad Amazon S3 di replicare solo gli oggetti con il prefisso del nome della chiave TaxDocs. Tutti gli oggetti caricati che hanno questo prefisso del nome della chiave, ad esempio TaxDocs/document1.pdf, verranno replicati. Per le richieste di oggetti con questo prefisso del nome della chiave, Amazon S3 restituisce l'intestazione x-amz-replication-status con uno dei valori seguenti per lo stato della replica dell'oggetto: PENDING, COMPLETED o FAILED.

    Nota

    Se la replica dell'oggetto ha esito negativo dopo il caricamento di un oggetto, non è possibile provare a eseguirla di nuovo. È necessario caricare di nuovo l'oggetto. Gli oggetti passano a uno stato FAILED per problemi dovuti ad esempio alla mancanza di autorizzazioni per il ruolo di replica, autorizzazioni AWS KMS o autorizzazioni di bucket. In caso di errori temporanei, ad esempio se un bucket o una regione non è disponibile, lo stato della replica non passerà a FAILED, ma rimarrà PENDING. Dopo che la risorsa è tornata online, S3 riprenderà la replica di tali oggetti.

  • Quando richiedi un oggetto dal bucket di destinazione, se l'oggetto nella richiesta è una replica creata da Amazon S3, Amazon S3 restituisce l'intestazione x-amz-replication-status con il valore REPLICA.

Nota

Prima di eliminare un oggetto da un bucket di origine in cui è abilitata la replica, è consigliabile controllare lo stato della replica per assicurarsi che l'oggetto sia stato replicato.

Se nel bucket di origine è abilitata la configurazione del ciclo di vita, Amazon S3 sospende tutte le operazioni del ciclo di vita fino a quando non contrassegna lo stato degli oggetti come COMPLETED o FAILED.

Stato della replica in caso di replica su più bucket di destinazione

Quando si replicano oggetti in più bucket di destinazione, l'intestazione x-amz-replication-status funziona in modo diverso. L'intestazione dell'oggetto di origine restituisce un valore COMPLETED solo se la replica ha esito positivo su tutte le destinazioni. L'intestazione rimane al valore PENDING fino al completamento della replica per tutte le destinazioni. Se la replica su una o più destinazioni non riesce, viene restituita l'intestazione FAILED.

Stato della replica se è abilitata la sincronizzazione della modifica alla replica Amazon S3

Quando le regole di replica abilitano la sincronizzazione delle modifiche alla replica Amazon S3, le repliche possono riportare stati diversi da REPLICA. Se le modifiche dei metadati sono in corso di replica, l'intestazione x-amz-replication-status restituisce PENDING. Se la sincronizzazione delle modifiche della replica non riesce a replicare i metadati, l'intestazione restituisce FAILED. Se i metadati vengono replicati correttamente, le repliche restituiscono l'intestazione REPLICA.

Ricerca dello stato di replica

Per visualizzare lo stato della replica degli oggetti in un bucket, è possibile utilizzare lo strumento Inventario Amazon S3. Amazon S3 invia un file CSV al bucket di destinazione specificato nella configurazione dell'inventario. Puoi anche utilizzare Amazon Athena per eseguire una query sullo stato della replica nel report di inventario. Per ulteriori informazioni su Inventario Amazon S3, consulta Inventario Amazon S3.

Puoi individuare lo stato della replica di un oggetto anche utilizzando la console, la AWS Command Line Interface (AWS CLI) o l'SDK AWS.

Nella console S3 puoi visualizzare lo stato della replica di un oggetto nella pagina Dettagli dell'oggetto in Panoramica della gestione degli oggetti.

  1. Accedi alla AWS Management Console e apri la console Amazon S3 all'indirizzo https://console.aws.amazon.com/s3/.

  2. Nell'elenco Bucket, seleziona il nome del bucket.

  3. Nell'elenco Oggetti, seleziona il nome dell'oggetto.

  4. Nella scheda Properties (Proprietà) cerca Object management overview (Panoramica della gestione degli oggetti) dove puoi vedere lo stato della replica.

Per richiamare i metadati dell'oggetto, utilizza il comando head-object come riportato di seguito.

aws s3api head-object --bucket source-bucket --key object-key --version-id object-version-id

Il comando restituisce i metadati dell'oggetto, incluso l'elemento ReplicationStatus come illustrato nella risposta di esempio seguente.

{ "AcceptRanges":"bytes", "ContentType":"image/jpeg", "LastModified":"Mon, 23 Mar 2015 21:02:29 GMT", "ContentLength":3191, "ReplicationStatus":"COMPLETED", "VersionId":"jfnW.HIMOfYiD_9rGbSkmroXsFj3fqZ.", "ETag":"\"6805f2cfc46c0f04559748bb039d69ae\"", "Metadata":{ } }

I frammenti di codice seguenti recuperano lo stato della replica rispettivamente con AWS SDK for Java e AWS SDK for .NET.

Java
GetObjectMetadataRequest metadataRequest = new GetObjectMetadataRequest(bucketName, key); ObjectMetadata metadata = s3Client.getObjectMetadata(metadataRequest); System.out.println("Replication Status : " + metadata.getRawMetadataValue(Headers.OBJECT_REPLICATION_STATUS));
.NET
GetObjectMetadataRequest getmetadataRequest = new GetObjectMetadataRequest { BucketName = sourceBucket, Key = objectKey }; GetObjectMetadataResponse getmetadataResponse = client.GetObjectMetadata(getmetadataRequest); Console.WriteLine("Object replication status: {0}", getmetadataResponse.ReplicationStatus);