Zum Inhalt springen
HexaTransfer
Zurück zum Blog
Technische Vertiefungen

S3-kompatible Speicherarchitektur für Dateiübertragung

Bauen Sie Systeme zur Dateiübertragung auf S3-kompatiblem Speicher auf: Architekturmuster, Anbietervergleich und Performance-Optimierung.

S3-kompatibler Speicher ist das Rückgrat der meisten modernen Dateiübertragungsdienste, weil die API universell ist, die Preise wettbewerbsfähig sind und die Architektur skaliert, ohne Festplatten zu verwalten. AWS S3 hat das Modell 2006 entwickelt, und Klone wie Cloudflare R2, Backblaze B2, Wasabi, MinIO und DigitalOcean Spaces implementieren dieselbe REST-Schnittstelle. Das BSI weist in seiner Cloud-Computing-Orientierungshilfe C5 darauf hin, dass Datensouveränität und -residenz bei der Anbieterwahl berücksichtigt werden müssen – ein Gesichtspunkt, der die Entscheidung zwischen US-amerikanischen und europäischen S3-Anbietern unter DSGVO-Gesichtspunkten maßgeblich beeinflusst. Das Bauen eines Übertragungsdienstes auf S3-kompatiblem Speicher gibt Ihnen dauerhaften Objektspeicher, Multipart-Uploads für große Dateien und presignierte URLs für direkte Browser-zu-Speicher-Übertragungen, die Ihre App-Server umgehen.

Warum die S3-API gewann

Die S3-API ist de facto ein Standard. Amazon veröffentlichte sie 2006, und jeder große Objektspeicheranbieter implementierte sie, um Workloads zu übernehmen. Das bedeutet, dass ein gut geschriebener Übertragungsdienst, der das AWS SDK für JavaScript (aws-sdk v3) verwendet, zwischen Anbietern wechseln kann, indem er einfach die Endpunkt-URL ändert. Open-Source-Clients wie minio-js, MinIO mc CLI und rclone funktionieren unverändert über Anbieter hinweg. Das gibt Architekten Flexibilität: Mit AWS S3 für Zuverlässigkeit starten, zu Cloudflare R2 für null Egress-Gebühren wechseln oder MinIO selbst gehostet für Datenresidenz betreiben – ohne Anwendungscode neu zu schreiben.

Anbietervergleich für Übertragungsworkloads

| Anbieter | Speicher | Egress | Kostenlos | Besonderheit | |---|---|---|---|---| | AWS S3 Standard | 0,023 $/GB | 0,09 $/GB | 5 GB, 15 GB Egress/Mo. | 11 Neuner Haltbarkeit | | Cloudflare R2 | 0,015 $/GB | 0 $ | 10 GB, 1M Reads/Mo. | Null Egress-Gebühren | | Backblaze B2 | 0,006 $/GB | 0,01 $/GB | 10 GB frei | Bandwidth Alliance mit Cloudflare | | Wasabi | 0,0069 $/GB | 0 $ | Keine (nur kostenpflichtig) | 90 Tage Mindestspeicherung | | MinIO selbst gehostet | Hardware-Kosten | Eigene Bandbreite | Open Source | AGPL v3, überall betreibbar | | DigitalOcean Spaces | 5 $/Mo. für 250 GB | 1 TB inbegriffen | Keine | Festes Preispaket |

Für einen Übertragungsdienst, bei dem Dateien kurz gespeichert und dann heruntergeladen werden, dominiert Egress. Cloudflare R2 und Backblaze B2 (über Bandwidth Alliance) gewinnen bei den Kosten. AWS S3 gewinnt bei Funktionen wie Intelligent-Tiering und Lifecycle-Richtlinien. Für europäische DSGVO-Konformität bieten IONOS S3 oder Scaleway Speicherung ausschließlich in der EU an.

Multipart-Upload für große Dateien

Die S3-Multipart-Upload-API ist der Weg, wie Übertragungsdienste Dateien über 5 GB handhaben. Sie initiieren den Multipart-Upload, um eine UploadId zu erhalten, laden jedes Teil hoch (mindestens 5 MB, maximal 5 GB pro Teil, 10.000 Teile insgesamt) und senden dann eine CompleteMultipartUpload-Anfrage mit der Liste der ETags. Teile können parallel hochgeladen werden. Fehlgeschlagene Teile wiederholen sich unabhängig. Clients verwenden presignierte URLs für jedes Teil, sodass Uploads direkt vom Browser zu S3 gehen und Ihren App-Server vollständig umgehen. Die maximale Objektgröße in S3 beträgt 5 TB und deckt praktisch jeden Übertragungs-Anwendungsfall ab.

Presignierte URLs und direkte Uploads

Presignierte URLs ermöglichen einem Client, direkt zu S3 hochzuladen oder herunterzuladen, ohne dass Ihre Server die Bytes berühren. Ihr Backend generiert eine mit HMAC-SHA256 und AWS-Anmeldeinformationen signierte URL, die für eine bestimmte Zeit gültig ist (typischerweise 1 bis 24 Stunden). Der Client PUT- oder GET-setzt gegen die URL. Dieses Muster spart erhebliche Kosten: Ihre App-Server benötigen keine Bandbreite, um 10-GB-Dateien zu proxyen, und die Latenz sinkt, weil Clients den Speicherendpunkt direkt treffen. Die CORS-Konfiguration im Bucket ermöglicht Browser-Uploads von Ihrer Origin. Verwenden Sie SSE-C (serverseitige Verschlüsselung mit kundenseitig bereitgestellten Schlüsseln) oder SSE-KMS für Verschlüsselung im Ruhezustand.

Architekturmuster für Übertragungsdienste

Eine typische S3-gestützte Übertragungsarchitektur hat drei Ebenen. Das Frontend läuft in einem Browser, initiiert Multipart-Uploads und verfolgt Chunk-Fortschritte. Das API-Backend (ein kleiner Node.js-, Go- oder Python-Dienst) verarbeitet Authentifizierung, Metadatenspeicherung in PostgreSQL oder DynamoDB und generiert presignierte URLs. Die Speicherebene ist der S3-kompatible Bucket. Diese Architektur skaliert horizontal, weil die App-Ebene zustandslos ist und die Speicherebene die gesamte Bandbreite aufnimmt. Ein CDN wie Cloudflare oder CloudFront vor GET-Anfragen verbessert Download-Geschwindigkeiten global und reduziert Egress von S3.

Lifecycle-Richtlinien und automatische Löschung

Übertragungsdienste benötigen automatisch ablaufende Dateien. S3-Lifecycle-Regeln verschieben Objekte zwischen Speicherklassen oder löschen sie basierend auf dem Alter. Eine Regel „Objekte löschen, die älter als 7 Tage sind" läuft täglich und bereinigt abgelaufene Übertragungen ohne Kosten. Cloudflare R2 unterstützt Lifecycle-Regeln über den Terraform-Anbieter oder die R2-API. Abgebrochene Multipart-Uploads sollten ihre eigene Regel haben: AbortIncompleteMultipartUpload nach 1 bis 7 Tagen gibt Speicher aus unvollständigen Sitzungen frei. Automatische Löschung hilft auch bei der DSGVO-Compliance: Dateien werden nach definierten Aufbewahrungsfristen automatisch beseitigt.

Leistungsoptimierung

S3-Durchsatz skaliert mit dem Präfix. AWS S3 zielt auf 3.500 PUTs/Sek. und 5.500 GETs/Sek. pro Präfix im Bucket ab und verwendet konsistentes Hashing der ersten Schlüsselzeichen zur Partitionierung. Vermeiden Sie sequenzielle Schlüsselpräfixe (001, 002, 003), weil sie auf dieselbe Partition hashen und Hot Spots erzeugen; verwenden Sie zufällige Präfixe oder hash-basierte Schlüssel wie die ersten 8 Zeichen einer UUID. Multipart-Uploads verbessern den Durchsatz für individuelle Übertragungen; parallele Verbindungen über Schlüssel hinweg verbessern den Gesamtdurchsatz. Transfer Acceleration leitet Uploads durch den nächsten CloudFront-Edge und kann die Upload-Zeit für entfernte Clients um 50 bis 500 Prozent reduzieren.

Verschlüsselungsoptionen und ihre Kompromisse

Serverseitige Verschlüsselung gibt es in drei Varianten. SSE-S3 (oder R2s Standardverschlüsselung) verwendet AES-256 mit vom Anbieter verwalteten Schlüsseln, transparent und kostenlos. SSE-KMS verwendet von AWS KMS verwaltete Schlüssel, kostet 0,03 $ pro 10.000 Anfragen plus Schlüsselgebühren und erzeugt KMS-Audit-Logs, die für Compliance nützlich sind. SSE-C akzeptiert einen kundenseitig bereitgestellten Schlüssel pro Anfrage – der Server verschlüsselt damit und verwirft den Schlüssel, sodass der Kunde ihn bei jedem Lesezugriff bereitstellen muss. Für echte Ende-zu-Ende-Verschlüsselung: client-seitig vor dem Upload mit libsodium oder der AES-GCM-Funktion der Web Crypto API verschlüsseln, dann das gespeicherte Objekt als undurchsichtigen Geheimtext behandeln.

Überwachung, Metriken und Abrechnungsüberraschungen

Beobachten Sie Bucket-Metriken in CloudWatch (AWS), dem R2-Dashboard oder Provider-äquivalenten Tools. Wichtige Metriken: BucketSizeBytes, NumberOfObjects, AllRequests, 4xxErrors, 5xxErrors und BytesDownloaded. Unerwartete Egress-Spitzen deuten oft auf Hot-Linking hin oder auf einen Bot, der in einer Schleife herunterlädt. Setzen Sie Abrechnungswarnungen bei 50, 80 und 100 Prozent des Budgets. HexaTransfer nutzt client-seitige AES-256-GCM-Verschlüsselung mit diesem Architekturmuster, sodass das S3-kompatible Backend nur Geheimtext speichert und der Verschlüsselungsschlüssel den Browser nie verlässt.

Kostenlos ausprobieren auf hexatransfer.com — kein Konto erforderlich, bis zu 10 GB.

Große Dateien sicher mit Ende-zu-Ende-Verschlüsselung senden

Übertragen Sie Dateien bis zu 10 GB kostenlos mit Ende-zu-Ende-Verschlüsselung. Kein Konto erforderlich. Ihre Dateien werden in Ihrem Browser verschlüsselt, bevor sie hochgeladen werden — niemand sonst kann sie lesen.

Datei senden