Wie löscht man einen großen S3 Bucket?

Einleitung

Aufgrund einer openstack-cli-Beschränkung schlägt das Entfernen von S3 Buckets mit mehr als 10 000 Objekten bei Verwendung des Befehls fehl:

openstack container delete --recursive <<bucket_name>>

Der Befehl schlägt mit einer Fehlermeldung fehl:

Conflict (HTTP 409) (Request-ID: tx00000000000001bb5e8e5-006135c488-35bc5d520-dias_default) clean_up DeleteContainer: Conflict (HTTP 409) (Request-ID:)

Empfohlener Ansatz

Zum Löschen eines großen S3 Buckets können wir s3cmd verwenden.

Um über s3cmd Zugriff auf Object Storage Buckets zu erhalten, müssen Sie zunächst Ihre eigenen EC2-Zugangsdaten mit diesem Tutorial generieren: cloud/How-to-generate-ec2-credentials-on-CODE-DE

Konfigurieren Sie s3cmd mit dem Befehl:

s3cmd --configure

folgende Werte hinzufügen und bestätigen:

Access Key: (your EC2 Access Key)
Secret Key: (your EC2 Secret Key)
Default Region: RegionOne
S3 Endpoint: https://s3.fra1-1.cloudferro.com
DNS-style bucket+hostname:port template for accessing a bucket: https://s3.fra1-1.cloudferro.com
Encryption password: (your password)
Path to GPG program: /usr/bin/gpg
Use HTTPS protocol: True
HTTP Proxy server name:
HTTP Proxy server port: 0

Nach diesem Vorgang sollte es Ihnen möglich sein, Ihren Object Storage aufzulisten und darauf zuzugreifen.

Listen Sie Ihre Buckets mit diesem Befehl auf:

eouser@vm01:$ s3cmd ls
2022-02-02 22:22  s3://large-bucket

Jetzt können Sie Ihren großen Bucket mit dem unten dargestellten Befehl löschen, wobei -r für rekursives Entfernen steht.

s3cmd rb -r s3://large-bucket

Alle Dateien in Ihrem Bucket und das angegebene Bucket selbst werden entfernt.

WARNING: Bucket is not empty. Removing all the objects from it first. This may take some time...
delete: 's3://large-bucket/example_file.jpg'
delete: 's3://large-bucket/example_file.txt'
delete: 's3://large-bucket/example_file.png'
...
...
...
Bucket 's3://large-bucket/' removed

Das große Bucket wurde erfolgreich entfernt und die Liste der Buckets ist nun leer.

eouser@vm01:$ s3cmd ls
eouser@vm01:$