Versionierung aktivieren/deaktivieren und wie eine versioniertes Objekt gelöscht wird

Inhalt:

Versionierung ermöglicht es, mehrere Versionen eines Objekts in einem Bucket aufzubewahren. So können Beispielsweise innovo.txt (Version 1) und innovo.txt (Version 2) in einem einzigen Bucket speichern. Die Versionierung kann Sie vor den Folgen von unbeabsichtigtem Überschreiben oder Löschen bewahren.

S3cmd

Mit S3cmd ist es nicht möglich die Versionierung einzuschalten und/oder versionierte Dateien zu löschen.

S3Browser

Versionierung einschalten

Um die Versionierung zu aktivieren, markieren wir den gewünschten Bucket(1). Machen auf den Bucket einen rechten Mausklick und klicken dann auf “Edit Versioning Settings”(2).

Im sich öffnenden Fenster klicken wir in die Checkbox von “Enable versioning for bucket”(1) und bestätigen dies mit “OK”(2).

Versionierung deaktivieren

Um die Versionierung zu deaktivieren, markieren wir den gewünschten Bucket(1). Klicken dann mit einem rechten Mausklick auf den Bucket und dann auf “Edit Versioning Settings”(2).

Im sich öffnenden Fenster entfernen wir die Checkbox bei “Enable versioning for bucket”(1) und bestätigen dies mit “OK”(2).

Versionierte Datei löschen

Dies ist in der Free-Version von S3Browser nicht möglich.

Cyberduck

Um die verschiedenen Version einer Datei zu sehen, müssen versteckte Dateien angezeigt werden. Diese Option findet man unter Darstellung(1) → Versteckte Dateien anzeigen(2)

Versionierung einschalten

Nach dem Öffnen von Cyberduck, klicken wir auf eine Datei, wo wir die Versionierung(1) für aktivieren wollen. Danach auf Aktion(2) und auf Info(3).

Danach öffnet sich das folgende Fenster, hier setzen wir den Haken bei “Bucket Versionierung”(1):

Versionierung deaktivieren

Um die Versionierung zu deaktivieren, markieren wir wieder eine Datei(1), gehen auf Aktion(2) und auf Info(3).

In dem sich öffnenden Fenster wird der Haken bei “Bucket Versionierung” entfernt.

Versionierte Datei löschen

Hier wird einfach die zu löschende Datei markiert(1) und über Aktion(2) → Löschen(3) entfernt.

Boto3

Bei boto3 brauchen wir zunächst die S3 Kennung, damit ein Script nutzbar ist. Für Details: S3 Kennung erstellen und einlesen #boto3.

Versionierung einschalten

Um nun einen Bucket zu erstellen, müssen wir einen Clienten nutzen und den Bucket dann erstellen. Eine Option sieht so aus:

## Angabe des Buckets in dem die Versionierung aktiviert werden soll
bucket = s3.Bucket('iNNOVO-Test')

## Versionierung aktivieren
bucket.configure_versioning(True)

Ein komplettes Script für boto 3 inkl. Authentifizierung kann so aussehen:

#!/usr/bin/env/python

## Definieren das boto3 genutzt werden soll
import boto3
from botocore.client import Config

## Authentifizierung
s3 = boto3.resource('s3',
                        endpoint_url='https://s3.es1.fra.optimist.gec.io',
                        aws_access_key_id='aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa',
                        aws_secret_access_key='bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb',
                    )

## Angabe des Buckets in dem die Versionierung aktiviert werden soll
bucket = s3.Bucket('iNNOVO-Test')

## Versionierung aktivieren
bucket.configure_versioning(True)

Versionierung deaktivieren

Wie bei der Aktivierung der Versionierung wird zunächst der Bucket benötigt um dann die Versionierung zu deaktivieren. Eine Option sieht so aus:

## Angabe des Buckets in dem die Versionierung deaktiviert werden soll
bucket = s3.Bucket('iNNOVO-Test')

## Versionierung deaktivieren
bucket.configure_versioning(False)

Ein komplettes Script für boto 3 inkl. Authentifizierung kann so aussehen:

#!/usr/bin/env/python

## Definieren das boto3 genutzt werden soll
import boto3
from botocore.client import Config

## Authentifizierung
s3 = boto3.resource('s3',
                        endpoint_url='https://s3.es1.fra.optimist.gec.io',
                        aws_access_key_id='aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa',
                        aws_secret_access_key='6229490344a445f2aa59cdc0e53add88',
                    )

## Angabe des Buckets in dem die Versionierung deaktiviert werden soll
bucket = s3.Bucket('iNNOVO-Test')

## Versionierung deaktivieren
bucket.configure_versioning(False)

Versioniertes Objekt löschen

Um ein versioniertes Objekt komplett zu löschen, ist folgender Befehl hilfreich:

## Angabe des Buckets in dem das versionierte Objekt gelöscht werden soll
bucket = s3.Bucket('iNNOVO-Test')

## Versioniertes Objekt löschen
bucket.object_versions.all().delete('innovo.txt')