Hallo. Wir haben gerade von Discourse EC2 zu Discourse ECS (Container-Dienst) migriert. Während wir noch auf EC2 waren, war S3-Uploads noch nicht eingerichtet. Vor der Migration haben wir alle Bilder von EC2 in den S3-Bucket kopiert (mit öffentlichem Zugriff). Nach der Migration mit aktiviertem S3-Uploads (noch ohne CDN) stellten wir jedoch fest, dass Bilder (und Avatare) überhaupt nicht geladen wurden.
Außerdem haben wir einen Unterschied zwischen den URLs der Bilder festgestellt (Discourse verwendete weiterhin die URLs für „lokale Uploads in EC2“).
Dies ist der Link in S3: https://[s3-bucket].s3.amazonaws.com/original/1X/831092e27d6c066c3618a587a5c378e1c794f2c6.png
Link in Discourse (URL stammt weiterhin von den EC2-Uploads): https://[domain]/uploads/default/original/1X/831092e27d6c066c3618a587a5c378e1c794f2c6.png
Der Fehler im Browser lautet: 404 NOT FOUND
Wie konfigurieren wir Discourse, damit es die korrekten S3-URLs für die Bilder verwendet?
Nur zur Klärung: Sollte dies ausschließlich auf EC2 ausgeführt werden? Gibt es eine andere Möglichkeit, Uploads zu migrieren oder Bild-URLs zu aktualisieren? Derzeit ist die EC2-Instanz gestoppt, und die aktuelle ECS-Umgebung nutzt bereits die Domain sowie die Datenbank/Cache. Ich bin mir daher nicht sicher, ob wir die Domain und die Datenbank/Cache ohne Ausfallzeit wieder auf die alte EC2 zurückführen (und dann neu aufbauen) können. Vielen Dank.
Sie möchten den Befehl in einer Instanz ausführen, die Zugriff auf die Bilder hat. Oh, aber wenn Sie sie selbst manuell nach S3 verschoben haben, dann möchten Sie vielleicht stattdessen einige Änderungen an der uploads-Tabelle vornehmen.
Ich arbeite an einer Anleitung mit Anweisungen zum Verschieben von einem Bucket in einen anderen, die Sie möglicherweise nutzen können, um Ihr Problem zu lösen. Allerdings müssen Sie diese Anweisungen anpassen, um Ihre lokalen-zu-Bucket-Änderungen anstelle von Bucket-zu-Bucket-Änderungen zu berücksichtigen.
Wenn ich Ihnen einen Pauschalpreis für den Job berechnen würde, würde ich wahrscheinlich 4 Stunden in Rechnung stellen, obwohl es bei einer Stundenzahlung vielleicht nur eine Stunde wäre.
Oh! Entschuldigung. Ich habe das gerade bemerkt. Wenn die EC2 dieselbe Datenbank verwendet, können Sie sie möglicherweise wieder hochfahren (wobei die ECS vor Ort bleibt) und die migrate-to-s3-Aufgabe dort ausführen. Sie müssen zuvor alle S3-Elemente in Umgebungsvariablen (ENV) wie in Verwendung von Objektspeicher für Uploads (S3 & Clones) beschrieben hinterlegen. Dies ist wahrscheinlich die einfachste Lösung. Ich empfehle, vor dem Start ein Backup nur der Datenbank durchzuführen.