Bucket e Object versioning
Intro
Bucket versioning è una funzione fornita da Amazon Web Services (AWS) e pienamente supportata da Cubbit DS3. Questa funzione consente di mantenere più versioni di oggetti in un bucket S3, permettendo di conservare, recuperare e ripristinare con facilità ogni versione di un oggetto nel bucket.
L'abilitazione del versioning per un bucket assegna un version ID univoco a ogni nuova versione di un oggetto. Questo ID viene generato automaticamente e non può essere modificato o eliminato. Questa funzione garantisce la possibilità di tenere traccia di tutte le modifiche apportate a un oggetto nel corso del tempo e di ripristinare una versione precedente se necessario, offrendo preziosi vantaggi in termini di integrità dei dati e di disaster recovery.
Bucket versioning è un requisito per abilitare object lock.
Caricamenti sicuri
L'abilitazione del versioning nel bucket S3 garantisce che caricando più volte lo stesso file con lo stesso nome si crei una nuova versione dell'oggetto invece di sovrascrivere quella esistente. Ogni nuova versione generata ha un version ID univoco, che è un UUIDv4 a 128 bit di dimensione fissa.
Scarica una versione specifica
Di default, scaricare un oggetto seleziona la sua versione più recente. Per impostazione predefinita, il download di un oggetto sceglie la sua versione più recente, ma è anche possibile recuperare una versione specifica dell'oggetto se si conosce il suo version ID.
Maggiori informazioni su come scaricare versioni specifiche di un oggetto sono disponibili qui.
Cancellazioni sicure
Per impostazione predefinita l'eliminazione di un oggetto non rimuove alcun contenuto, ma si limita a contrassegnare l'oggetto come eliminato con un DeleteMarker sopra di esso. Ciò significa che è ancora possibile recuperare o ripristinare qualsiasi versione precedente di quell'oggetto.
Se vuoi rimuovere definitivamente una versione specifica puoi farlo specificando il suo version ID.
Maggiori informazioni su come eliminare le versioni degli oggetti sono disponibili qui.
Caveats
- Il versioning è una funzione a livello di bucket. Può essere abilitata solo per l'intero bucket, non per un sottoinsieme di oggetti. Maggiori informazioni su come abilitare il versioning su un bucket sono disponibili qui.
- Il versioning del bucket può essere sospeso, modificando così il comportamento del bucket in futuro senza influire sulle versioni precedenti.
- Si tenga presente che il versioning ha un costo di archiviazione. Ad esempio, se un file di 1 GB viene sottoposto a backup giornaliero in un bucket con versioning, ogni backup crea una nuova versione, aumentando l'utilizzo dello storage di 1 GB. Dopo un mese, 30 versioni dell'oggetto occuperanno un totale di 30 GB. Maggiori informazioni su come eliminare definitivamente le versioni sono disponibili qui.
How to
Questa sezione fornisce le istruzioni per lavorare con la funzione di versioning utilizzando la Cubbit Web Console o i comandi AWS s3api CLI.
Abilitare il versionamento dei bucket
- Cubbit Console
- AWS S3 API
Attualmente, l'unico modo per abilitare il versionamento su un bucket utilizzando la Cubbit Console è durante la sua creazione.
- Accedere alla [Cubbit Console] (https://console.cubbit.eu).
- Fare clic sul pulsante "Create bucket" in alto a destra.
- Scegliere il nome del bucket.
- Nella sezione versioning del bucket fare clic sul pulsante "Versioning enabled" e infine confermare facendo clic sul pulsante "Create bucket".
Si dovrebbe vedere un nuovo bucket, con il versionamento abilitato.
È un'API PutBucketVersiong
in cui si specifica anche Status=Enabled
:
aws s3api put-bucket-versioning --endpoint https://s3.cubbit.eu --bucket my-cubbit-bucket --versioning-configuration Status=Enabled
Scaricare versioni specifiche di oggetti
È possibile elencare o scaricare versioni specifiche di un oggetto.
- Cubbit Console
- AWS S3 API
Una volta creato il bucket versionato, si dovrebbe:
- Fare clic sul bucket versionato creato nel passaggio precedente.
- Cliccare sul toggle "Show versions".
Ora è possibile vedere tutte le diverse versioni di un singolo oggetto e operare sulle versioni specifiche.
Per elencare tutte le versioni di un bucket è necessario utilizzare l'API ListObjectVersions
:
aws s3api list-object-versions --endpoint https://s3.cubbit.eu --bucket my-cubbit-bucket
Mentre per ottenere i metadati degli oggetti (o per scaricarli) è sufficiente specificare il version-id
, ad esempio su un HeadObject
:
aws s3api head-object --endpoint https://s3.cubbit.eu --bucket my-cubbit-bucket --key sergio.jpg --version-id d89da4c9-b87a-4af4-a6fc-7f76f1e631be
Eliminare definitivamente le versioni degli oggetti
Infine, vediamo come cancellare versioni specifiche di un oggetto. Si tenga presente che le operazioni di cancellazione delle versioni sono irreversibili.
- Cubbit Console
- AWS S3 API
Considerati i passaggi precedenti, questa operazione è piuttosto semplice. Una volta elencate le versioni, è possibile fare clic su una singola versione, aprire il menu facendo clic sull'icona dei tre puntini a destra e fare clic sul pulsante "Elimina". Questa azione elimina una singola versione, in modo permanente.
Se invece si vuole creare un DeleteMarker
, mantenendo le vecchie versioni, disattivare il toggle "Show versions" per tornare alla vecchia visualizzazione. A questo punto, si può cancellare l'oggetto in modo sicuro.
Provare a fare nuovamente clic sul toggle "Show versions". Le vecchie versioni sono ancora lì e un DeleteMarker
con size = 0 è sopra di esse!
È una DeleteObject
in cui si specifica anche un version-id
:
aws s3api delete-object --endpoint https://s3.cubbit.eu --bucket my-cubbit-bucket --key sergio.jpg --version-id d89da4c9-b87a-4af4-a6fc-7f76f1e631be