Skip to content
← Alle Anleitungen

Devora Cloud · Blog

Privater S3 für Ihre App: Bilder und Dateien raus aus der Datenbank

Warum Bilder, PDFs und Videos in S3 gehören und nur der Schlüssel in die Datenbank, wie der private Bucket pro Projekt bei Devora Cloud funktioniert, signierte URLs, enthaltener Speicher und Zusatzpakete.

Ihre AppS3_BUCKETPostgreSQLimage_key =produtos/foto.pngDB hält nur den SchlüsselPrivater Bucketdc-loja-1a2b3cuploads/produtos/docs/Kontospeicher1 · 5 · 25 GBSignierte URL…/foto.png?X-Amz-Expires=3600läuft in 1 Stunde abBesuchersieht nur Freigegebenes
Technische Illustration. Funktionen und Regionen hängen von Plan, Verfügbarkeit und Kompatibilität der Anwendung ab.

Jede Anwendung fängt klein an: ein Formular mit Foto-Upload, ein Feld für ein PDF. Die schnellste Lösung ist meist, die Datei auf die Server-Festplatte oder direkt in eine Datenbankspalte zu schreiben. Am ersten Tag klappt das – und beim ersten Deployment, beim ersten Replikat oder beim ersten riesigen Backup wird es zum Problem.

Diese Anleitung erklärt, warum Dateien in einen S3-Objektspeicher gehören, wie der private S3 jedes Projekts bei Devora Cloud funktioniert und wie Sie Dateien Besuchern zeigen, ohne etwas öffentlich zu machen.

Warum Dateien weder in die Datenbank noch auf die Festplatte gehören

Eine Datenbank ist ideal für strukturierte Informationen: Nutzer, Bestellungen, Preise. Liegen die Binärdaten von Bildern und Videos in Tabellen, wächst die Datenbank schnell, Backups und Wiederherstellungen werden langsam, und die Dateien konkurrieren mit den wichtigen Abfragen um Arbeitsspeicher.

Die Container-Festplatte hat ein anderes Problem: Sie ist weder dauerhaft noch geteilt. Jedes Deployment erzeugt eine frische Umgebung, und Load-Balancing-Replikate sehen die Festplatten der anderen nicht. Eine Datei, die bei einer Kopie hochgeladen wurde, existiert bei der anderen schlicht nicht.

Die Faustregel ist einfach:

  • Die Datei kommt in S3.
  • Die Datenbank speichert nur die Referenz: den Objektschlüssel (etwa produkte/123/foto.png), den ursprünglichen Namen, Größe, Typ und Eigentümer.
  • Die Anwendung erzeugt den Link erst beim Anzeigen.

Ein privater Bucket pro Projekt, mit eigenem Schlüssel

Bei Devora Cloud kann jedes Projekt einen eigenen privaten S3-Bucket mit eigenem Zugangsschlüssel haben. Dieser Schlüssel funktioniert nur für diesen Bucket: Ein Projekt kann die Dateien eines anderen weder lesen noch löschen – auch nicht innerhalb desselben Kontos.

Beim Anlegen des Speichers erhält das Projekt fertige Umgebungsvariablen:

  • S3_ENDPOINT=https://s3.devoracloud.com
  • S3_REGION=us-east-1
  • S3_BUCKET mit dem Bucket-Namen des Projekts
  • S3_ACCESS_KEY und S3_SECRET_KEY
  • S3_FORCE_PATH_STYLE=true

Jedes S3-kompatible SDK funktioniert – AWS SDK v3 in Node.js, boto3 in Python, der S3-Treiber von Laravel und andere –, solange es Path-Style-Adressierung nutzt. Im Bucket legen Sie beliebige Ordner an, etwa uploads/2026/ oder rechnungen/.

Zugangsdaten dürfen nur auf dem Server gelesen werden. Legen Sie den geheimen Schlüssel nie in Variablen ab, die der Browser sieht, etwa solche mit dem Präfix NEXT_PUBLIC_.

Signierte URLs: anzeigen, ohne zu veröffentlichen

Wenn der Bucket privat ist – wie sieht der Besucher dann das Produktfoto? Über eine signierte URL (Presigned URL). Die Anwendung erzeugt auf dem Server einen befristeten Link zu genau einem Objekt, zum Beispiel eine Stunde gültig. Wer den Link hat, kann die Datei bis zum Ablauf herunterladen; danach funktioniert der Link nicht mehr.

  • Produktfotos und Avatare: URL beim Rendern der Seite erzeugen.
  • Rechnungen, Verträge und Befunde: URL erst erzeugen, nachdem geprüft wurde, dass der angemeldete Nutzer die Datei sehen darf.
  • Logo, CSS und Icons der eigenen Website: mit dem Code ausliefern, nicht im Bucket.

Der Zugangsschlüssel gelangt nie in den Browser. Der Besucher erhält nur den signierten Link, der abläuft.

Wie viel Speicher enthalten ist

TarifMonatspreisEnthaltener S3
Hobby5 US$1 GB
Pro20 US$5 GB
Enterprise59 US$25 GB

Der Speicher gehört zum Konto, nicht zu einem einzelnen Projekt: Alle Projekte des Kontos teilen ihn sich. Brauchen Sie mehr, kaufen Sie im Dashboard ein Zusatzpaket:

  • 100 GB für 3 US$ pro Monat
  • 250 GB für 4 US$ pro Monat
  • 1 TB für 12 US$ pro Monat

Bezahlte Pakete kommen zum Tariflimit hinzu. Bezahlt wird per Karte, Kunden in Brasilien zahlen per Pix in Real.

Was passiert, wenn der Speicher voll ist

Erreicht die Nutzung das Limit, werden neue Uploads abgelehnt (S3 antwortet mit dem Fehler QuotaExceeded). Bereits gespeicherte Dateien bleiben erhalten und erreichbar; nichts wird gelöscht.

Um wieder hochladen zu können, löschen Sie nicht mehr benötigte Dateien, kaufen ein Paket oder wechseln in einen Tarif mit mehr Speicher. Behandeln Sie diesen Fehler im Code und zeigen Sie Nutzern eine klare Meldung statt eines allgemeinen Fehlers.

Wenn Sie das KI-Token nutzen, prüft Ihre KI die S3-Nutzung, bevor sie viele Dateien hochlädt, und warnt Sie ab 80 %.

Checkliste: Uploads nach S3 verlagern

  • Legen Sie den S3-Speicher des Projekts im Dashboard an – oder lassen Sie das Ihre KI erledigen.
  • Ersetzen Sie Schreibvorgänge auf die Festplatte durch Uploads nach S3 mit den Projektvariablen.
  • Fügen Sie eine Datenbankspalte für den Objektschlüssel hinzu und speichern Sie keine Binärdaten mehr in Tabellen.
  • Erzeugen Sie signierte URLs für private Dateien.
  • Kopieren Sie vorhandene Dateien: Das Hinzufügen von S3 migriert keine Altbestände.
  • Wenn Ihr Tarif es erlaubt, testen Sie mit zwei Replikaten, ob nichts mehr von der Festplatte abhängt.

Häufige Fragen

Funktioniert der S3 von Devora mit den AWS-SDKs?

Ja. Er spricht die S3-API und funktioniert daher mit gängigen SDKs (AWS SDK, boto3, Laravel und anderen), wenn Sie den Endpoint https://s3.devoracloud.com und den Path-Style-Modus einstellen.

Kann ich eine Datei öffentlich machen?

Der Bucket ist privat. Um Besuchern Dateien zu zeigen, erzeugen Sie in der Anwendung befristete signierte URLs; geben Sie den Zugangsschlüssel nie preis.

Gilt der Tarifspeicher pro Projekt?

Nein. Der enthaltene Speicher (1, 5 oder 25 GB) und Zusatzpakete werden von allen Projekten des Kontos geteilt.

Verliere ich Dateien, wenn der Speicher voll ist?

Nein. Nur neue Uploads stoppen. Gespeicherte Dateien bleiben erhalten, bis Sie Platz schaffen oder das Limit erhöhen.

Privater S3 für Ihre App: Bilder und Dateien raus aus der Datenbank · Devora Cloud