Verwenden Sie Amazon S3 nicht mehr für Uploads

I want to stop using Amazon s3 for uploads.
I’ve not done a rake task like this so want to check things before I run on the live environment.
My plan is to use a clone of my live server to test the rake task uploads:migrate_from_s3.

Will this move the files from s3?
Or copy them to the local storage and leave the s3 files there until I manually delete them?

If it deletes them from s3 that will break the live forum and that would be bad!
thanks

2 „Gefällt mir“

I believe @vinothkannans can point you in the right direction here.

1 „Gefällt mir“

Yes, it will remove the file from S3.

You should clone your S3 bucket too. And change the bucket name to newly cloned one in the site settings before testing the migration process.

Also I will recommend you to take a backup of S3 bucket before running the migration in live environment.

4 „Gefällt mir“

Der Rake-Auftrag uploads:migrate_from_s3 erscheint nicht, wenn ich in die App gehe und rake -AT eingebe.

Gibt es eine neue Methode, um Uploads von S3 zurück auf den lokalen Speicher zu migrieren?

2 „Gefällt mir“

Welche Ausgabe erhältst du, wenn du rake task uploads:migrate_from_s3 ausführst??

rake abgebrochen!

Keine Idee, wie man die Aufgabe ‘uploads:migrate_from_s3’ erstellt (Siehe die Liste der verfügbaren Aufgaben mit rake --tasks)

Meintest du vielleicht? uploads:migrate_to_s3

Er wurde in einem Community-Pull-Request entfernt. Du kannst die Begründung hier nachlesen:

4 „Gefällt mir“

Danke dafür. Ich kann leider keine Anweisungen oder Hinweise finden, wie dies manuell erledigt werden soll.

1 „Gefällt mir“

Sie können awscli verwenden, um manuell alle Ihre Dateien von S3 auf Ihren Server zu migrieren.

cd /var/discourse
./launcher enter app
sudo apt install awscli
aws configure

Konfigurieren Sie aws mit Ihrer S3-ID und Ihrem Passwort. Dann:

cd public/uploads/default/
aws s3 sync s3://mybucketname/

Dieser Befehl lädt alle Dateien von S3 nach public/uploads/default/ herunter. Dann:

rake posts:rebake
exit
./launcher rebuild app
4 „Gefällt mir“

Ich habe zunächst versucht, die Migration von S3 zu beheben, und wurde nach Abschluss meiner eigenen Migration als Testumgebung für den von mir geschriebenen Code darauf hingewiesen, dass ich den völlig falschen Ansatz gewählt hatte. Diese Aussage wurde durch Datenkorruption in meiner (großen) Instanz gestützt, die ich von S3 auf lokale Dateien migriert hatte. Vor relativ kurzer Zeit habe ich manuell beschädigte Daten in der Datenbank repariert, und ich gehe nicht davon aus, dass die Aufräumarbeiten nach meinem Versuch abgeschlossen sind.

Wenn ich heute eine Migration von S3 auf meinen eigenen Speicher starten würde, würde ich einen MinIO-Container neben Discourse starten, den MinIO-Client verwenden, um von S3 in meinen MinIO-Container zu kopieren, Discourse für den neuen „S3“-Standort meines lokalen MinIO neu konfigurieren und dann posts:remap ausführen oder alle Beiträge neu backen, um „S3“ aus meinem MinIO-Container auszuliefern.

Hier ist ein Beispiel dafür, wie posts:remap hier funktionieren sollte. Ich habe das Gefühl, dass es irgendwo hier ein besseres Beispiel gibt, aber dies sollte ausreichen, um zu beginnen.

6 „Gefällt mir“

Also habe ich diese Anweisungen befolgt und konnte meine Uploads kopieren, aber es gibt immer noch Links zum S3-Server in der gesamten Instanz, obwohl S3-Uploads deaktiviert sind. Ich habe versucht, ein Discourse Remap durchzuführen, aber das war nicht effektiv, ebenso wenig ein rake posts:remap. posts:rebake war ebenfalls nicht erfolgreich.

Das Einrichten von Uploads auf S3 war wirklich einfach, aber das Zurückkehren ist es nicht.

4 „Gefällt mir“

Die Migration von S3 ist seit langem defekt und wurde bisher nicht behoben. Lies den obigen Beitrag von mcdanlj.

Welche Ausgabe erhältst du für den folgenden Befehl?

./launcher enter app
rails c
Upload.all.sample(20).pluck(:url)
3 „Gefällt mir“

Ich habe die Uploads einzeln neu verlinkt, da die Seite derzeit noch nicht umfangreich ist.
rake posts:missing_uploads war hilfreich, um festzustellen, ob ich sie alle erfasst habe.

2 „Gefällt mir“

Bist du sicher, dass alle URLs korrekt umgemappt wurden? Nicht nur für Bilder, sondern auch für Avatare, Icons, Backups usw. Versuche den obigen Befehl und prüfe, ob die S3-URL im Output erscheint.

3 „Gefällt mir“

Die URLs sind wieder alle relativ. Leider bin ich mir nicht sicher, welche Kombination aus Rake-Tasks und Neuaufbau der App das Geheimnis meines Erfolgs war. Jemand, der sich mit Discourse besser auskennt als ich, sollte eine wasserdichte Anleitung erstellen, wie dies zu bewerkstelligen ist.

Die Verwendung von awscli, wie von Pravi oben beschrieben, war effektiv, um Dateien von S3 zu kopieren.

6 „Gefällt mir“

Ich bin ebenfalls sehr verwirrt.
Früher hatte ich zu verschiedenen Zeiten zwei S3-Buckets. Der Befehl rake posts:missing_uploads zeigte, dass bei etwa 500 Beiträgen Uploads fehlten oder diese betroffen waren.

Dann entschied ich mich, die Assets beider Buckets auf einen lokalen Ubuntu-Server (auf einer GCP-Instanz) zu kopieren. Jetzt zeigen sich jedoch etwa 1000 fehlende Uploads.

Wenn ich Upload.all.sample(1000).pluck(:url) ausführe, erhalte ich unterschiedliche Pfade für die Uploads: einige auf dem lokalen Server, einige in Bucket1 und nur sehr wenige in Bucket2.

Was soll ich jetzt tun? (Derzeit sind meine Uploads auf dem lokalen Server konfiguriert).

Meine Website ist klein und umfasst in zwei Jahren nur etwa 1000 Beiträge.

1 „Gefällt mir“

Sie müssen die S3-URL neu zuordnen. Können Sie die Ausgabe von Upload.all.sample(1000).pluck(:url) posten?

1 „Gefällt mir“

Danke, Ji.

Ich kann das versuchen, wenn die Erfolgschancen gut sind.

Edit: Das habe ich gemacht, aber die Bilder in meinen Beiträgen sind dadurch komplett verschwunden. Beim Hover über den Bild-Platzhalter wurde kein URL-Link angezeigt. Zuvor wurde nicht nur ein kleines Bildsymbol, sondern auch die Bild-URL angezeigt.

Ich habe etwa 45 Zeilen Ausgabe. Weiß nicht, ob du alle 1000 Zeilen hier einfügen sollst?

=> ["//bxyzbucket1.s3.dualstack.ap-south-1.amazonaws.com/uploads/original/1X/7277b38e1d614b3d700f6266fa5b841a15e7c6ba.jpeg",
 "//bxyzbucket1.s3.dualstack.ap-south-1.amazonaws.com/uploads/original/1X/0c1f27b110ff476c636265b46d63f83c5bf575e9.jpeg",
 "//bxyzbucket1.s3.dualstack.ap-south-1.amazonaws.com/uploads/original/2X/a/a18dd8e63379c70e2a4014b0f6d85cf89ab12ed7.jpeg",
 "//bxyzbucket1.s3.dualstack.ap-south-1.amazonaws.com/uploads/original/2X/5/51798c75050206a784d9ae186cffb5c4558b1625.jpeg",
 "/uploads/default/original/2X/1/159ca83317895ddaefec42ee75c8748201f34d1f.jpeg",
 "//bxyzbucket1.s3.dualstack.ap-south-1.amazonaws.com/uploads/original/2X/1/1593a5f91ac7642180c9651544806d89342a4e24.jpeg",
 "/uploads/default/original/2X/f/fa7c701e58c198984707161364c81e9c59b27572.jpeg",
 "/uploads/default/original/2X/b/b6b12c4df19b234f6d1551c26d92a14969f19f12.jpeg",
 "//bxyzbucket1.s3.dualstack.ap-south-1.amazonaws.com/uploads/original/2X/f/fcd4201295e6e63a7496e70e8b067225774834f3.jpeg",
 "//bxyzbucket1.s3.dualstack.ap-south-1.amazonaws.com/uploads/original/2X/f/f42150c03cce15a1bdc34c6af746fe51b63db36c.jpeg",
 "//bxyzbucket1.s3.dualstack.ap-south-1.amazonaws.com/uploads/original/1X/e66cfb3a0bdc558a02fd999d1bf5a185521456cf.jpeg",
 "//bxyzbucket1.s3.dualstack.ap-south-1.amazonaws.com/uploads/original/1X/1885bc0fe4cf6ee25ab8d6e250807c9836168cdc.jpeg",
 "//bxyzbucket1.s3.dualstack.ap-south-1.amazonaws.com/uploads/original/2X/c/c1f240c94d45e0be0cfcd7a3cc714e389bb49f23.jpeg",
 "//bxyzbucket1.s3.dualstack.ap-south-1.amazonaws.com/uploads/original/2X/2/293518b6119a17d64222cf5d691aee271fa572cf.jpeg",
 "//bxyzbucket1.s3.dualstack.ap-south-1.amazonaws.com/uploads/original/1X/617f0bb525f05934ae455582deacb96e7fd097e9.jpeg",
 "//bhdisco.s3.dualstack.ap-south-1.amazonaws.com/uploads/original/2X/3/331a610d2237294bdb126eecf1f087173c5087df.jpeg",
 "//bxyzbucket1.s3.dualstack.ap-south-1.amazonaws.com/uploads/original/2X/d/d0b3efa53ceab849e17e781e63f2b969f94dbde0.jpeg",
 "/images/default-favicon.ico",
 "/uploads/default/original/2X/b/b399c60eb0b83232531ef2ead5a060fbd9c2a64e.jpeg",
 "//bxyzbucket1.s3.dualstack.ap-south-1.amazonaws.com/uploads/original/2X/9/987178dc86175225b999151e112deb3bf26b13af.jpeg",
 "//bxyzbucket1.s3.dualstack.ap-south-1.amazonaws.com/uploads/original/2X/c/c99c8a9dd3e59cecc6fb5010f362b1dc3f49ca66.jpeg",
 "//bhdisco.s3.dualstack.ap-south-1.amazonaws.com/uploads/original/2X/5/5c145297f26cd91f6f157d507324724ba15cb618.jpeg",
 "//bxyzbucket1.s3.dualstack.ap-south-1.amazonaws.com/uploads/original/2X/e/ef5c223cd604e3574c300671da61693dc5399e62.jpeg",
 "//bxyzbucket1.s3.dualstack.ap-south-1.amazonaws.com/uploads/original/1X/9c99b85e976c42bc3c692f75b8828abbbc2bc4ea.jpeg",
 "//bxyzbucket1.s3.dualstack.ap-south-1.amazonaws.com/uploads/original/2X/6/6f88f27ee155e69bb5b701b86eba9dc3e369bc09.png",
 "//bxyzbucket1.s3.dualstack.ap-south-1.amazonaws.com/uploads/original/2X/3/3b454434e58b05db14f51c3fcdfbd36d0d96d4eb.jpeg",
 "//bxyzbucket1.s3.dualstack.ap-south-1.amazonaws.com/uploads/original/1X/b7e92457674b8c28f6ecfbc9340816fc3583d20e.jpeg",
 "//bxyzbucket1.s3.dualstack.ap-south-1.amazonaws.com/uploads/original/2X/7/731c0ee200660fb1888cd058c79282bf7f6dab95.jpeg",
 "//bxyzbucket1.s3.dualstack.ap-south-1.amazonaws.com/uploads/original/1X/a42f92c28be8bd5ac86bb55f36fc9ca0bec37c72.jpeg",
 "//bxyzbucket1.s3.dualstack.ap-south-1.amazonaws.com/uploads/original/1X/ac7dc4c531d428b152de3eebceb44bfe779c349d.jpeg",
 "//bhdisco.s3.dualstack.ap-south-1.amazonaws.com/uploads/original/2X/f/f361a9ad5194ef13c2c6b24e2db98455e7cc48d9.jpeg",
 "//bxyzbucket1.s3.dualstack.ap-south-1.amazonaws.com/uploads/original/1X/43ec21eafc00f8cd05976e0fbec41ef686e0e3b3.png",
 "//bxyzbucket1.s3.dualstack.ap-south-1.amazonaws.com/uploads/original/1X/8b41f21b02df80a9e5c4ea14a5dffa5776811f3d.jpeg",
 "//bxyzbucket1.s3.dualstack.ap-south-1.amazonaws.com/uploads/original/2X/6/6eee5c5a5a2b274e7d8ccc911cd4f594cc4930de.png",
 "//bxyzbucket1.s3.dualstack.ap-south-1.amazonaws.com/uploads/original/1X/c1736a8c2923f0bd341f7112db74cd62392f7e14.jpeg",
 "//bxyzbucket1.s3.dualstack.ap-south-1.amazonaws.com/uploads/original/2X/c/c3e2fbb84c55dbf2f1fdccf835964eb4319e2371.png",
 "//bxyzbucket1.s3.dualstack.ap-south-1.amazonaws.com/uploads/original/2X/0/0b41e87ab7728dbead217e237c4ad8940bdfe776.png",
 "//bhdisco.s3.dualstack.ap-south-1.amazonaws.com/uploads/original/2X/a/a3ac121566d741d5b396ba49625f3206ff0c498f.jpeg",
 "//bxyzbucket1.s3.dualstack.ap-south-1.amazonaws.com/uploads/original/2X/b/bbbb6973cb0900389675691c5c129c907cf4611f.jpeg",
 "//bxyzbucket1.s3.dualstack.ap-south-1.amazonaws.com/uploads/original/2X/2/28f5d5bf46b30a33bde8e67c184cb099cc71511a.jpeg",
 "//bxyzbucket1.s3.dualstack.ap-south-1.amazonaws.com/uploads/original/2X/f/ff34c3fc207781d5881d4583cceb26aa54619c0e.jpeg",
 "//bxyzbucket1.s3.dualstack.ap-south-1.amazonaws.com/uploads/original/2X/f/f85db75b4721b8d24abf78ee3d25f2ffbef26da9.jpeg",
 "//bxyzbucket1.s3.dualstack.ap-south-1.amazonaws.com/uploads/original/1X/35c6402fbf4a8fca05f30924800fa0c90cf891e7.png",
 "//bxyzbucket1.s3.dualstack.ap-south-1.amazonaws.com/uploads/original/2X/9/9d8f29892278f164e8ce27a6b58cc8af0760802c.png",
 "//bxyzbucket1.s3.dualstack.ap-south-1.amazonaws.com/uploads/original/2X/1/1a533eb9f4ec5186427a541a7ebbf06817627f97.png",
1 „Gefällt mir“

Ich sehe mehrere defekte Avatare auf Ihrer Website. Ich nehme an, das liegt daran, dass Sie entweder den S3-Bucket gelöscht haben oder die Bilder nicht neu erstellt haben, nachdem Sie alle Dateien von S3 zurückkopiert haben. Warum gibt es im Output zwei Buckets?

bhdisco.s3.dualstack.ap-south-1.amazonaws.com
bxyzbucket1.s3.dualstack.ap-south-1.amazonaws.com

Haben Sie Ihre Website zunächst mit einem Bucket konfiguriert und später auf einen anderen umgestellt?

3 „Gefällt mir“

Entschuldigung, ich habe die Benachrichtigung über deine Antwort irgendwie übersehen. Vielen Dank dafür.

Ich habe den S3-Bucket nicht gelöscht, aber ich habe die Buckets tatsächlich früher gewechselt (zu diesem Zeitpunkt war mir die Komplexität nicht bewusst). Daher befanden sich alle meine Assets in zwei S3-Buckets, aber jetzt habe ich sie manuell auch auf den lokalen Server kopiert (/var/discourse/shared/web_only/uploads/default).

Wie sollte ich vorgehen, um dieses Durcheinander zu bereinigen?

Hinweis: Ich bin mit den grundlegenden Befehlen des Containers, der Rails-Konsole und AWS S3 vertraut.

1 „Gefällt mir“