Buckets
Buckets legst du im Portal unter Storage → Buckets an, oder mit jedem S3-Client, sobald du einen Zugriffsschlüssel hast.
Die Region wählst du beim Anlegen. Sie lässt sich später nicht ändern.
Öffentlicher Lesezugriff
Ein Bucket lässt sich im Portal auf öffentlich stellen. Öffentlich bedeutet anonymes GET und HEAD auf Objekte: Wer die URL hat, kann sie herunterladen, ohne Schlüssel und ohne Signatur.
https://storage.itsh.dev/<bucket>/<key>Auflisten ist nie öffentlich, auch nicht bei einem öffentlichen Bucket. Der Inhalt lässt sich also nicht durchgehen, man muss den Objektnamen kennen oder raten.
Öffentlich sticht die Zugriffsstufe
Öffentlicher Lesezugriff gilt für alle und damit auch für Schlüssel, die du bewusst eingeschränkt hast. Ein Nur-Schreiben-Schlüssel auf einem öffentlichen Bucket kann dessen Objekte weiterhin lesen, indem er sich schlicht nicht authentifiziert. Verlass dich bei einem öffentlichen Bucket nicht darauf, dass eine Zugriffsstufe das Lesen verhindert.
Das Zurückstellen auf privat greift innerhalb von 5 Minuten.
CORS
Browser brauchen eine CORS-Konfiguration, bevor JavaScript quellübergreifend aus einem Bucket lesen darf. Setz sie mit einem beliebigen S3-Client und einem Schlüssel mit der Stufe Voll:
aws --endpoint-url https://storage.itsh.dev s3api put-bucket-cors \
--bucket my-bucket \
--cors-configuration '{
"CORSRules": [{
"AllowedOrigins": ["https://app.example.com"],
"AllowedMethods": ["GET", "HEAD", "PUT"],
"AllowedHeaders": ["*"],
"ExposeHeaders": ["ETag"],
"MaxAgeSeconds": 3600
}]
}'CORS-Änderungen greifen innerhalb von 5 Minuten.
Origins werden exakt verglichen
https://app.example.com passt nicht auf https://www.app.example.com und nicht auf einen anderen Port. Trag jede Origin ein, die du brauchst, oder nutze *.
Manche Browser-APIs senden Origin: null statt der Seiten-Origin, etwa Code in einem Worker oder in einem Sandbox-Frame. Wenn Downloads im Browser scheitern, Uploads aber funktionieren, nimm "null" mit in AllowedOrigins auf.
Bucket löschen
Das Löschen eines Buckets vernichtet seine Objekte und lässt sich nicht rückgängig machen. Der Name wird sofort frei und jeder Kunde kann ihn dann beanspruchen.
War ein Schlüssel nur auf diesen einen Bucket eingeschränkt, bleibt ihm danach nichts mehr, worauf er zugreifen könnte. Er wird deshalb deaktiviert, statt still ins Leere zu laufen. Das Portal zeigt betroffene Schlüssel vor dem Bestätigen an.
Weiter
- Zugriffsschlüssel: Schlüssel einschränken und Zugriffsstufen
- Überblick: Endpunkt, Regionen und Bucket-Namen