Zum Hauptinhalt springen
API-Referenz

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.

Buckets erstellst du im Reiter Bucket.

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.

Berechtigungen verwaltest du im Reiter Bucket, indem du einen Bucket auswählst und die Zugriffsrechte anpasst.

Lifecycle-Policies

Lifecycle-Policies ermöglichen dir das automatische Festlegen von Ablauf- und Aufbewahrungsregeln für Objekte in einem Bucket basierend auf Präfixen.

note

Lifecycle-Policies können über nctl oder die API verwaltet werden. Sie sind derzeit nicht im Cockpit konfigurierbar.

note

Jedes --lifecycle-policy-Flag erstellt eine eigene, separate Policy. Schlüssel-Wert-Paare innerhalb einer Policy werden mit ; getrennt.

  1. 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
  2. Lifecycle-Policies bei einem bestehenden Bucket aktualisieren oder entfernen:

    # Eine bestimmte Policy nach exakter Definition entfernen
    nctl 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ügen
    nctl 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.

note

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.

note

Das --cors-Flag kann mehrfach verwendet werden. Einträge werden deterministisch zusammengeführt. Schlüssel-Wert-Paare werden mit ; getrennt, mehere Werte mit ,.

  1. Bucket mit CORS-Konfiguration erstellen:

    # Ein einzelnes Flag
    nctl 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
  2. CORS-Konfiguration bei einem bestehenden Bucket aktualisieren oder löschen:

    # CORS-Konfiguration aktualisieren
    nctl 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.

  1. Custom Hostnames aktualisieren:

    # Einen Hostname entfernen
    nctl update bucket my-bucket \
    --delete-custom-hostnames assets.example.com

    # Alle Hostnamen entfernen und einen neuen in einem Durchlauf setzen
    nctl 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.

Bucket-Details findest du im Reiter Bucket.

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.