Buckets verwalten
Unsere Kundenschnittstelle Cockpit ermöglicht dir, unser Produkt "Object Storage" selbstständig zu beziehen und zu verwalten.
Alle Standorte befinden sich physisch in der Schweiz — siehe Rechenzentrums-Standorte für Details.
Buckets erstellen
Buckets können über das Cockpit, nctl oder die API verwaltet werden. Beim Erstellen eines Buckets musst du immer einen eindeutigen Namen und einen Standort angeben.
Die folgenden Einstellungen kannst du optional vornehmen:
- Versionierung: Die Dateien werden versioniert abgelegt. Dadurch wird mehr Speicherplatz belegt, die Daten sind bspw. aber vor ungewolltem Überschreiben geschützt.
- Öffentlich lesbar: Die Daten des Buckets können ohne Authentifizierung abgerufen oder heruntergeladen werden.
- Öffentlich auflisten: Über die angegebene öffentliche URL kann eine Liste der Dateien im Bucket abgerufen werden. Die Option setzt voraus, dass "Öffentlich lesbar" aktiviert wurde.
- Location: Definiert den Standort der Daten.
Alle Optionen, mit Ausnahme der "Location", können zu einem späteren Zeitpunkt nach Bedarf angepasst werden.
- Cockpit
- nctl
Buckets erstellst du im Reiter Bucket.
-
Stelle sicher, dass
nctlinstalliert ist. -
Authentifiziere dich mit unserer API über
nctl:nctl auth login -
Erstelle einen Bucket mit Angabe des erforderlichen Standorts:
nctl create bucket my-bucket --location=nine-cz41 -
Eine vollständige Beschreibung aller verfügbaren Flags und Optionen erhältst du mit:
nctl create bucket --help
Bucket-Berechtigungen
Nach dem Erstellen eines Buckets kannst du festlegen, welche Benutzer Zugriff auf den Bucket erhalten sollen. Benutzern kann Lesezugriff (reader) oder Schreibzugriff (writer) gewährt werden. Es können nur Benutzer aus derselben Location gewählt werden, in der der Bucket angelegt wurde.
- Cockpit
- nctl
Berechtigungen verwaltest du im Reiter Bucket, indem du einen Bucket auswählst und die Zugriffsrechte anpasst.
Das --permissions-Flag kann mehrfach verwendet werden. Die Werte werden deterministisch zusammengeführt und Duplikate automatisch entfernt. Schlüssel werden mit ; getrennt, mehrere Werte mit ,.
-
Beispiele beim Erstellen eines Buckets:
# Mehrere Flags mit jeweils einer Permission (deterministisch zusammengeführt, Duplikate entfernt)# Ergebnis: reader=frontend,analytics,john; writer=ingestnctl create bucket my-bucket --permissions reader=frontend,analytics \--permissions writer=ingest \--permissions reader=john# Mehrere Permissions in einem Flagnctl create bucket my-bucket --permissions reader=frontend,analytics;writer=ingest;reader=john -
Beispiele beim Aktualisieren eines bestehenden Buckets:
# Weitere Leser hinzufügennctl update bucket my-bucket \--permissions reader=frontend,analytics;writer=ingest;reader=john \--permissions reader=guest1,guest2# Bestimmte Rollen/Nutzer entfernennctl update bucket my-bucket \--delete-permissions reader=john;writer=ingest
Lifecycle-Policies
Lifecycle-Policies ermöglichen dir das automatische Festlegen von Ablauf- und Aufbewahrungsregeln für Objekte in einem Bucket basierend auf Präfixen.
Lifecycle-Policies können über nctl oder die API verwaltet werden. Sie sind derzeit nicht im Cockpit konfigurierbar.
- nctl
Jedes --lifecycle-policy-Flag erstellt eine eigene, separate Policy. Schlüssel-Wert-Paare innerhalb einer Policy werden mit ; getrennt.
-
Bucket mit Lifecycle-Policies erstellen:
# Eine Policy (z. B. für `logs/`)nctl create bucket my-bucket --lifecycle-policy prefix=logs/;expire-after-days=7;is-live=true# Mehrere Policies (Flag wiederholen)nctl create bucket my-bucket --lifecycle-policy prefix=tmp/;expire-after=72h;is-live=true \--lifecycle-policy prefix=archive/;expire-after-days=365;is-live=false -
Lifecycle-Policies bei einem bestehenden Bucket aktualisieren oder entfernen:
# Eine bestimmte Policy nach exakter Definition entfernennctl update bucket my-bucket \--delete-lifecycle-policy prefix=tmp/;expire-after=72h;is-live=true# Alle Policies löschen und zwei neue in einem Durchlauf hinzufügennctl update bucket my-bucket \--clear-lifecycle-policies \--lifecycle-policy prefix=logs/;expire-after-days=7;is-live=true \--lifecycle-policy prefix=archive/;expire-after-days=365;is-live=false
Wie das Ablaufdatum nicht aktueller Versionen berechnet wird
Eine Lifecycle Policy, die is-live=false mit expire-after-days kombiniert,
entspricht der S3-Aktion NoncurrentVersionExpiration. Dabei wird
NoncurrentDays auf den Wert von expire-after-days gesetzt.
Bei versionierten Buckets beginnt die Ablauffrist, wenn eine Objektversion nicht mehr aktuell (non-current) wird und nicht zu dem Zeitpunkt, an dem diese Version ursprünglich hochgeladen wurde.
Eine Version wird nicht mehr aktuell, wenn:
- eine neue Version desselben Objekts geschrieben wird und damit die aktuelle Version ersetzt, oder
- das Objekt gelöscht wird. Dabei wird ein Delete Marker erstellt und die vorherige Version wird nicht mehr aktuell.
Zum Beispiel:
nctl update bucket my-bucket --lifecycle-policy 'prefix=data/;expire-after-days=1;is-live=false'
Diese Policy lässt nicht mehr aktuelle Versionen unter data/ einen Tag nachdem
sie nicht mehr aktuell geworden sind ablaufen. Die Ablauffrist wird ab dem
Zeitpunkt berechnet, an dem die Version durch eine neuere Version oder einen
Delete Marker ersetzt wurde, und nicht ab dem ursprünglichen Upload-Zeitpunkt.
Wenn du ein Objekt an Tag 0 hochlädst und es an Tag 30 löschst, wird die aktuelle Version erst an Tag 30 nicht mehr aktuell. Bei einer Ablauffrist von 14 Tagen wird erwartet, dass diese Version ungefähr an Tag 44 abläuft, nicht an Tag 14.
Der Ablauf wird nicht unbedingt sofort verarbeitet, sobald die konfigurierte Frist erreicht ist. Die tatsächliche Löschung kann mit einer gewissen zusätzlichen Verzögerung erfolgen.
CORS-Konfiguration
Cross-Origin Resource Sharing (CORS) definiert, wie Webanwendungen von einer anderen Domain aus auf Ressourcen in deinem Bucket zugreifen dürfen.
- nctl
Das --cors-Flag kann mehrfach verwendet werden. Einträge werden deterministisch zusammengeführt. Schlüssel-Wert-Paare werden mit ; getrennt, mehere Werte mit ,.
-
Bucket mit CORS-Konfiguration erstellen:
# Ein einzelnes Flagnctl create bucket my-bucket --cors origins=https://example.com,https://app.example.com;response-headers=X-My-Header,ETag;max-age=3600# Mehrere Flags (deterministisch zusammengeführt)nctl create bucket my-bucket --cors origins=https://example.com;response-headers=ETag \--cors origins=https://app.example.com;response-headers=X-My-Header \--cors max-age=3600 -
CORS-Konfiguration bei einem bestehenden Bucket aktualisieren oder löschen:
# CORS-Konfiguration aktualisierennctl update bucket my-bucket \--cors origins=https://example.com;response-headers=ETag \--cors origins=https://app.example.com;response-headers=X-My-Header \--cors max-age=3600# Bestimmte CORS-Einträge entfernen (nach Schlüssel/Wert)nctl update bucket my-bucket \--delete-cors origins=https://app.example.com;response-headers=ETag
Custom Hostnames
Du kannst eigene Domainnamen für deinen Bucket festlegen und verwalten.
- nctl
-
Custom Hostnames aktualisieren:
# Einen Hostname entfernennctl update bucket my-bucket \--delete-custom-hostnames assets.example.com# Alle Hostnamen entfernen und einen neuen in einem Durchlauf setzennctl update bucket my-bucket \--clear-custom-hostnames \--custom-hostnames media.example.com
Bucket-Details abrufen
Die Konfiguration eines Buckets kann jederzeit über das Cockpit, nctl oder die API eingesehen werden.
- Cockpit
- nctl
Bucket-Details findest du im Reiter Bucket.
-
Verwende
get, um die Konfiguration und den Status eines Buckets zu überprüfen. Standardmässig wird eine Zusammenfassung (Name, Standort, Tier, Public-Flags, Versionierung usw.) angezeigt. Du kannst auch detaillierte Informationen mit den--print-*-Flags ausgeben:nctl get bucket <name> [flags] -
Eine vollständige Beschreibung aller verfügbaren Flags und Optionen erhältst du mit:
nctl get bucket --help
Bucket Zugriff
Siehe Object Storage Client Tools für Informationen dazu, wie du über die S3-kompatible API oder per HTTP auf deine Buckets zugreifen kannst, inklusive Konfigurationsbeispielen für gängige Client-Tools.