Ripristino di versioni precedenti - Amazon Simple Storage Service

Ripristino di versioni precedenti

Puoi utilizzare il controllo delle versioni per recuperare le versioni precedenti di un oggetto. Esistono due metodi per farlo:

  • Copiare una versione precedente dell'oggetto nello stesso bucket.

    La copia diventa la versione corrente dell'oggetto e vengono conservate tutte le sue versioni.

  • Eliminare definitivamente la versione corrente dell'oggetto.

    Così facendo, in effetti, la versione precedente diventa la versione corrente dell'oggetto.

Poiché vengono mantenute tutte le versioni dell'oggetto, è possibile trasformare una qualsiasi versione precedente nella versione corrente copiano una specifica versione dell'oggetto nello stesso bucket. Nella figura seguente l'oggetto di origine (ID = 111111) viene copiato nello stesso bucket. Amazon S3 fornisce un nuovo ID (88778877), che diventa la versione corrente dell'oggetto. In questo modo il bucket conterrà sia la versione originaria dell'oggetto (111111) che la sua copia (88778877). Per ulteriori informazioni su come ottenere una versione precedente e quindi caricarla per renderla la versione corrente, consulta Recupero delle versioni degli oggetti da un bucket con funzione Controllo delle versioni abilitata e Caricamento di oggetti.

Una richiesta GET successiva recupera la versione 88778877.

La figura seguente mostra come l'eliminazione della versione corrente (121212) di un oggetto consente di lasciare la versione precedente (111111) come oggetto corrente. Per ulteriori informazioni sull'eliminazione di un oggetto, consulta Eliminazione di un singolo oggetto.

Una richiesta GET successiva recupera la versione 111111.

Nota

Per ripristinare le versioni degli oggetti in batch, puoi utilizzare l'operazione COPY. L’operazione COPY copia ogni oggetto specificato nel manifesto. Tuttavia tieni presente che gli oggetti non vengono necessariamente copiati nello stesso ordine in cui appaiono nel manifesto. Per i bucket con versione, se è importante mantenere l'ordine di versione corrente/non corrente, è necessario copiare prima tutte le versioni non correnti. Quindi, al termine del primo processo, copia le versioni correnti in un processo successivo.

Come ripristinare le versioni precedenti 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 Buckets (Bucket) scegliere il nome del bucket contenente l'oggetto.

  3. Nell'elenco Oggetti scegliere il nome dell'oggetto.

  4. Scegliere le Versioni.

    Amazon S3 mostra tutte le versioni per l'oggetto.

  5. Selezionare la casella di controllo accanto all' ID versione per le versioni che si desidera recuperare.

  6. Scegliere Azioni, scegliere Scaricae salvare l'oggetto.

È anche possibile visualizzare, scaricare ed eliminare le versioni degli oggetti nel pannello di panoramica sull'oggetto. Per ulteriori informazioni, consulta Visualizzazione della panoramica di un oggetto nella console Amazon S3.

Importante

È possibile annullare l'eliminazione di un oggetto solo se è stato eliminato come ultima versione (corrente). Non è possibile annullare l'eliminazione della versione precedente di un oggetto eliminato. Per ulteriori informazioni, consulta Utilizzo della funzione Controllo delle versioni nei bucket S3.

Per informazioni sull'utilizzo di altri SDK AWS, consulta il Centro sviluppatori di AWS.

Python

Per istruzioni su come creare e testare un esempio di utilizzo, consulta Utilizzo di AWS SDK for Python (Boto).

Il seguente esempio di codice Python ripristina la versione precedente di un oggetto con versione eliminando tutte le versioni che si sono succedute dopo la versione di rollback specificata.

def rollback_object(bucket, object_key, version_id): """ Rolls back an object to an earlier version by deleting all versions that occurred after the specified rollback version. Usage is shown in the usage_demo_single_object function at the end of this module. :param bucket: The bucket that holds the object to roll back. :param object_key: The object to roll back. :param version_id: The version ID to roll back to. """ # Versions must be sorted by last_modified date because delete markers are # at the end of the list even when they are interspersed in time. versions = sorted(bucket.object_versions.filter(Prefix=object_key), key=attrgetter('last_modified'), reverse=True) logger.debug( "Got versions:\n%s", '\n'.join([f"\t{version.version_id}, last modified {version.last_modified}" for version in versions])) if version_id in [ver.version_id for ver in versions]: print(f"Rolling back to version {version_id}") for version in versions: if version.version_id != version_id: version.delete() print(f"Deleted version {version.version_id}") else: break print(f"Active version is now {bucket.Object(object_key).version_id}") else: raise KeyError(f"{version_id} was not found in the list of versions for " f"{object_key}.")