Konfigurieren Sie einen S3-kompatiblen Objektspeicheranbieter für Uploads

Hallo,

Ich stecke fest und bin verwirrt und hoffe, jemand kann mir helfen.
Ich hatte zuerst eine Bitnami-Installation und merkte, wie viele Probleme mir das im Laufe der Zeit bereiten würde. Ich habe die Installation mit der Standardinstallation neu durchgeführt.
Ich konnte mein Backup wiederherstellen und alles war in Ordnung, obwohl ich von der 2.8 zur 2.9 Beta wechselte.

Ich habe mein Backup erneut auf meinem Google Bucket getestet und es funktionierte immer noch einwandfrei.

Beachten Sie, dass die gesamte S3-Konfiguration über die Weboberfläche und nicht über Umgebungsvariablen erfolgte.

Aus DSGVO-Gründen habe ich einen neuen Backup-Bucket in Europa erstellt (nennen wir ihn discourse-backup-eu) und da ich die Umgebungsvariable ändern konnte, habe ich DISCOURSE_S3_ENDPOINT: https://storage.googleapis.com gesetzt, die App neu erstellt, den Namen des Backup-Buckets in der Weboberfläche geändert, das Backup erneut ausgeführt und war sehr erfreut, die Backup-Dateien in meinem neuen Backup-Bucket in Europa erscheinen zu sehen.

Jetzt wollte ich, dass die Uploads in einen anderen Bucket gehen und die Festplattenspeicher meines VMs nicht füllen.

Also habe ich einen neuen Bucket konfiguriert (nennen wir ihn discourse-uploads), ihn öffentlich gemacht und meinem Dienstkonto die Rolle Storage Legacy Bucket Owner für diesen neuen Bucket zugewiesen.
Dann habe ich eine Regel zu meinem bestehenden Load Balancer (nennen wir ihn https://www.example.com) hinzugefügt, um einen Backend-Bucket mit aktiviertem Cloud CDN zu verwenden, wie hier hier beschrieben. Die Regel /discourse-uploads/* verweist auf den Bucket discourse-uploads.

Ich habe mein CDN mit einer test.jpg im Stammverzeichnis des Buckets getestet, konnte es aber nicht über https://www.example.com/discourse-uploads/test.jpg erreichen und musste einen Unterordner namens discourse-uploads im Bucket erstellen, die test.jpg hinein verschieben und jetzt kann ich mein Testbild über https://www.example.com/discourse-uploads/test.jpg sehen.

Im Web-UI habe ich den Dummy-Bucket-Namen unter “s3 upload bucket” geändert (den ich zuvor beim Einrichten des Backups setzen musste) auf discourse-uploads, die CDN-URL mit https://www.example.com/discourse-uploads gefüllt und “enable s3 uploads” angekreuzt.

Von da an, wenn ich versuchen würde, ein Bild hochzuladen, würde ich ein Popup mit der Meldung “Ungültiges Argument” im Browserfenster erhalten (von einem 422-Fehler mit einem JSON-Inhalt, der im Grunde dasselbe sagt).

Ich habe versucht, alle Beiträge neu zu backen, aber ohne Erfolg, ich hatte immer noch den Fehler.

Also dachte ich, ich sollte versuchen, die Umgebungsvariablen anstelle der Web-UI zu verwenden.

und die folgende Konfiguration verwenden:

DISCOURSE_USE_S3: true
DISCOURSE_S3_REGION: whatever
DISCOURSE_S3_INSTALL_CORS_RULE: false
FORCE_S3_UPLOADS: 1
DISCOURSE_S3_ENDPOINT: https://storage.googleapis.com
DISCOURSE_S3_ACCESS_KEY_ID: MY_KEY_ID
DISCOURSE_S3_SECRET_ACCESS_KEY: MY_ACCESS_KEY
DISCOURSE_S3_CDN_URL: https://www.example.com/discourse-uploads
DISCOURSE_S3_BUCKET: discourse-uploads/discourse-uploads
DISCOURSE_S3_BACKUP_BUCKET: discourse-backup-eu
DISCOURSE_BACKUP_LOCATION: s3

Ich habe die App neu erstellt.
Dann kann ich Discourse nicht mehr öffnen, da keine der Assets in den Bucket hochgeladen wurden und ich einen 404 erhalte.
https://www.example.com/discourse-uploads/assets/admin-31467dc73634cbfb81799737c43df0e2939307d893ef32713f1d0770bcb3532c.br.js

Ich dachte, der Versuch, direkt in einen Unterordner im Bucket hochzuladen, sei ein wenig übertrieben, obwohl der OP vorschlägt, dass es funktioniert (zumindest für den Backup-Bucket).

habe die Umgebungsvariable geändert in
DISCOURSE_S3_BUCKET: discourse-uploads
(Ich dachte, ich könnte später mit der Host-Regel spielen, um das Hochladen in einen Unterordner zu vermeiden)

und neu erstellt, um zu sehen, ob etwas hochgeladen wird, aber nichts wird in den Bucket hochgeladen und Discourse kann immer noch wegen 404s nicht geöffnet werden.

Meine Fragen sind also:

  • Kollidieren die Web-UI und die Umgebungsvariable?
  • Wann sollen die Assets in den Bucket hochgeladen werden?
  • Wie kann ich das debuggen? Ich sehe keine Fehler in den Protokollen.
  • Ist es möglich, einen Unterordner eines Buckets in der Konfiguration festzulegen?
  • Sobald dies funktioniert, werden die zuvor hochgeladenen Bilder in den Bucket übertragen? Wenn ich neu backe, wie sehen die URLs der zuvor hochgeladenen Bilder aus?

Danke!

1 „Gefällt mir“