Come funzionano il Controllo versioni S3 - Amazon Simple Storage Service

Come funzionano il Controllo versioni S3

Puoi utilizzare il controllo delle versioni S3 per mantenere più versioni di un oggetto in un unico bucket e ripristinare gli oggetti che vengono accidentalmente eliminati o sovrascritti. Ad esempio, se applichi il controllo delle versioni S3 a un bucket, si verificano le seguenti modifiche:

  • Se anziché rimuovere un oggetto in modo permanente lo elimini, Amazon S3 inserisce un contrassegno di eliminazione che diventa la versione corrente dell'oggetto. È quindi possibile ripristinare la versione precedente. Per ulteriori informazioni, consultare Eliminazione di versioni di oggetti da un bucket con funzione Controllo delle versioni abilitata.

  • Se sovrascrivi un oggetto, Amazon S3 aggiunge una nuova versione dell'oggetto nel bucket. La versione precedente rimane nel bucket e diventa una versione non corrente. Puoi ripristinare la versione precedente.

Nota

A ogni versione archiviata e trasferita di un oggetto si applicano le tariffe Amazon S3 normali. Ogni versione di un oggetto è l'intero oggetto e non la sua versione precedente con qualche differenza. Per questo motivo, se sono presenti tre versioni di un oggetto memorizzate verranno addebitati tre oggetti.

A ogni bucket S3 creato è associata una sottorisorsa per la funzione Controllo delle versioni. (Per ulteriori informazioni, consulta Opzioni di configurazione dei bucket.) Per impostazione predefinita, il bucket è senza versione, di conseguenza la sottorisorsa per la funzione Controllo delle versioni archivia una configurazione vuota della funzione Controllo delle versioni.

<VersioningConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> </VersioningConfiguration>

Per abilitare il controllo delle versioni, puoi inviare una richiesta ad Amazon S3 con una configurazione del controllo delle versioni con lo stato Enabled.

<VersioningConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> <Status>Enabled</Status> </VersioningConfiguration>

Per sospendere la funzione Controllo delle versioni, si imposterà il valore dello stato su Suspended.

Nota

Quando abiliti il controllo delle versioni in un bucket per la prima volta, potrebbe essere necessario un breve periodo di tempo per la propagazione completa della modifica. Ti consigliamo di attendere 15 minuti dopo aver abilitato il controllo delle versioni prima di eseguire operazioni di scrittura (PUT o DELETE) sugli oggetti nel bucket.

Il proprietario del bucket e tutti gli utenti AWS Identity and Access Management (IAM) autorizzati possono abilitare il controllo delle versioni. Il proprietario del bucket è l'Account AWS che ha creato il bucket (l'account root). Per ulteriori informazioni sulle autorizzazioni, consultare Identity and Access Management in Amazon S3.

Per ulteriori informazioni sull'abilitazione e la disabilitazione del controllo delle versioni S3 utilizzando la AWS Management Console, AWS Command Line Interface (AWS CLI) o REST API, consulta Abilitazione della funzione Controllo delle versioni sui bucket.

ID versione

Se si abilita la funzione Controllo delle versioni del bucket, Amazon S3 genera automaticamente un ID versione univoco per l'oggetto archiviato. Ad esempio, un bucket può contenere due oggetti con la stessa chiave (nome dell'oggetto) ma ID versione diverso, ad esempio photo.gif (versione 111111) e photo.gif (versione 121212).


                Diagramma che illustra il funzionamento del controllo delle versioni S3 per un bucket con il controllo delle versioni abilitato che ha due oggetti con la stessa chiave ma ID versione diversi.

Ogni oggetto ha un ID versione, indipendentemente dal fatto che Controllo versioni S3 sia abilitato o meno. Se il controllo delle versioni S3 non è abilitato, Amazon S3 imposta il valore dell'ID versione su null. Se si attiva la funzione Controllo versioni S3, Amazon S3 assegna un valore ID versione per l'oggetto. Questo valore distingue l'oggetto dalle altre versioni della stessa chiave.

Quando si attiva la funzione Controllo versioni S3 in un bucket esistente, gli oggetti già archiviati nel bucket rimangono invariati. Gli ID versione (null), il contenuto e le autorizzazioni non sono cambiati. Dopo aver abilitato il controllo delle versioni S3, ogni oggetto aggiunto al bucket ottiene un ID versione che lo distingue dalle altre versioni della stessa chiave.

Solo Amazon S3 genera gli ID versione che non possono essere modificati. Gli ID di versione sono stringhe opache codificate in Unicode, UTF-8, pronte per l'URL, non lunghe più di 1.024 byte. Di seguito è riportato un esempio:

3sL4kqtJlcpXroDTDmJ+rmSpXd3dIbrHY+MTRCxf3vjVBH40Nr8X8gdRQBpUMLUo

Nota

Per semplicità, gli altri esempi in questo argomento utilizzano ID molto più brevi.

Flussi di lavoro per la funzione Controllo delle versioni

Se si esegue l'operazione PUT su un oggetto in un bucket abilitato per il controllo delle versioni, la versione non corrente non viene sovrascritta. Come mostrato nella seguente figura, quando viene eseguita un'operazione PUT per una nuova versione di photo.gif in un bucket che già contiene un oggetto con lo stesso nome, si verifica il seguente comportamento:

  • L'oggetto originale (ID = 111111) rimane nel bucket.

  • Amazon S3 genera un nuovo ID versione (121212) e aggiunge nel bucket questa versione più recente dell'oggetto.


                Diagramma che mostra il funzionamento del controllo delle versioni S3 quando si esegue l'operazione PUT per un oggetto in un bucket con il controllo delle versioni abilitato.

Con questa funzionalità è possibile recuperare la versione precedente di un oggetto che è stato accidentalmente sovrascritto o eliminato.

Quando esegui l'operazione DELETE per un oggetto, tutte le versioni rimangono nel bucket e Amazon S3 inserisce un contrassegno di eliminazione, come mostrato nell'illustrazione seguente.


                Diagramma che mostra il funzionamento del controllo delle versioni S3 quando si esegue l'operazione DELETE per un oggetto in un bucket con il controllo delle versioni abilitato.

Il contrassegno di eliminazione diventa la versione corrente dell'oggetto. Per default, le richieste GET recuperano la versione più recente archiviata. L'esecuzione di una richiesta GET Object quando la versione corrente è un contrassegno di eliminazione restituisce un errore 404 Not Found, come mostrato nell'illustrazione seguente.


                Diagramma che mostra la risposta a un'operazione GET per un oggetto in un bucket con il controllo delle versioni abilitato quando la versione corrente è un contrassegno di eliminazione.

È possibile, tuttavia, eseguire un'operazione GET su una versione non corrente di un oggetto specificando l'ID versione corrispondente. Nell'illustrazione seguente viene eseguita un'operazione GET su una versione specifica dell'oggetto (111111). Amazon S3 restituisce la versione dell'oggetto anche se non è la versione corrente.

Per ulteriori informazioni, consultare Recupero delle versioni degli oggetti da un bucket con funzione Controllo delle versioni abilitata.


                Diagramma che illustra come funziona il controllo delle versioni S3 quando si esegue l'operazione GET per una versione non corrente in un bucket con il controllo delle versioni abilitato.

È possibile eliminare in modo permanente un oggetto specificando la versione che si desidera eliminare. Soltanto il proprietario del bucket Amazon S3 può eliminare definitivamente una versione. Se l'operazione DELETE specifica versionId, la versione dell'oggetto viene eliminata definitivamente e Amazon S3 non inserisce un contrassegno di eliminazione.


                Diagramma che mostra come DELETE versionId elimina definitivamente una versione specifica dell'oggetto da un bucket con il controllo delle versioni abilitato senza inserire un contrassegno di eliminazione.

Puoi aggiungere un ulteriore livello di sicurezza configurando un bucket per abilitare l'eliminazione con autenticazione a più fattori (MFA). Quando abiliti l'eliminazione MFA per un bucket, il proprietario del bucket deve includere due tipi di autenticazione in qualsiasi richiesta per eliminare una versione o modificare lo stato del controllo delle versioni del bucket. Per ulteriori informazioni, consultare Configurazione dell'eliminazione di MFA.

Quando vengono create nuove versioni per un oggetto?

Le nuove versioni vengono create solo quando esegui l'operazione PUT per un nuovo oggetto. Tieni presente che alcune azioni, come COPY, funzionano implementando un'operazione PUT.

Alcune azioni che modificano l'oggetto corrente non creano una nuova versione perché non eseguono l'operazione PUT di un nuovo oggetto. Ciò include azioni come la modifica dei tag su un oggetto.

Importante

Se rilevi un aumento significativo nel numero di risposte HTTP 503 (servizio non disponibile) ricevute per le richieste PUT o DELETE di Amazon S3 in un bucket con il controllo delle versioni S3 abilitato, è possibile che esistano uno o più oggetti nel bucket per i quali sono presenti milioni di versioni. Per ulteriori informazioni, consulta Notevole miglioramento delle risposte di HTTP 503 alle richieste di Amazon S3 ai bucket con la funzione Versioni multiple abilitata nella sezione di risoluzione dei problemi.