Versionierung aktivieren/deaktivieren und wie ein 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 gespeichert werden. 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). Wir 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). Wir 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 Versionen 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, für die wir die Versionierung(1) aktivieren wollen. Danach klicken wir 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 Client 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 Boto3 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.openstack.de-west-01.wiit-cloud.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 Boto3 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.openstack.de-west-01.wiit-cloud.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')