توقف عن استخدام Amazon S3 للتحميلات

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)

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

إعجاب واحد (1)

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 إعجابات

لا تظهر مهمة rake uploads:migrate_from_s3 عند الدخول إلى التطبيق وإدخال rake -AT.

هل توجد طريقة جديدة لنقل التحميلات من S3 مرة أخرى إلى الموقع المحلي؟

إعجابَين (2)

ما هي المخرجات التي تحصل عليها عند تشغيل rake task uploads:migrate_from_s3؟

تم إيقاف Rake!

لا نعرف كيفية بناء المهمة ‘uploads:migrate_from_s3’ (راجع قائمة المهام المتاحة باستخدام rake --tasks)

هل تقصد؟ uploads:migrate_to_s3

تم إزالتها في طلب سحب (Pull Request) من المجتمع. يمكنك قراءة المبرر في

4 إعجابات

شكرًا لك. يبدو أنني لا أستطيع العثور على تعليمات أو إرشادات حول كيفية إنجاز ذلك يدويًا.

إعجاب واحد (1)

يمكنك استخدام awscli لنقل جميع ملفاتك يدويًا من S3 إلى خادمك،

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

قم بتكوين aws باستخدام معرف S3 وكلمة المرور الخاصة بك، ثم

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

سيؤدي هذا الأمر إلى تنزيل جميع الملفات من S3 إلى public/uploads/default/. بعد ذلك،

rake posts:rebake
exit
./launcher rebuild app
4 إعجابات

حاولت أولاً إصلاح عملية الهجرة من S3، وأُخبرت بعد أن أنهيت استخدام هجرتي الخاصة كبيئة اختبار للشفرة التي كنت أكتبها، أنني اتبعت نهجًا خاطئًا تمامًا. وقد تم دعم هذا الادعاء بحدوث تلف في البيانات في مثيلتي (الكبيرة) التي هاجرتها من S3 إلى ملفات محلية. مؤخرًا نسبيًا، انتهيت من إصلاح البيانات التالفة في قاعدة البيانات يدويًا، ولا أتوقع أن يكون تنظيف آثار محاولتي قد انتهى بعد.

لو كنت سأبدأ هجرة من S3 إلى تخزيني الخاص اليوم، لرفعت حاوية Minio بجانب Discourse، واستخدمت minio-client لنسخ البيانات من S3 إلى حاوية Minio الخاصة بي، ثم أعيدت تكوين Discourse لموقع “S3” الجديد لحاوية Minio المحلية، وأخيرًا نفذت أمر posts:remap أو أعدت تشكيل جميع المنشورات لخدمة “S3” من حاوية Minio الخاصة بي.

إليك مثال على كيفية عمل posts:remap هنا. أشعر بوجود مثال أفضل في مكان ما هنا، لكن هذا المثال كافٍ للبدء.

6 إعجابات

لذا، اتبعت هذه التعليمات وتمكنت من نسخ ملفات التحميل الخاصة بي، لكن لا تزال هناك روابط إلى خادم S3 في جميع أنحاء المثيل، حتى مع إيقاف تحميلات S3. جربت أمر discourse remap لكنه لم يكن فعالاً، وجربت أمر rake posts:remap لكنه لم يكن فعالاً، كما أن posts:rebake لم يكن فعالاً.

كان إعداد التحميلات على S3 سهلاً بالتأكيد، لكن العودة إلى الخلف لم تكن سهلة.

4 إعجابات

هجرة البيانات من S3 معطلة منذ فترة طويلة ولم يتم إصلاحها بعد. ارجع إلى المنشور السابق من mcdanlj.

ما هو الناتج الذي تحصل عليه من الأمر التالي؟

./launcher enter app
rails c
Upload.all.sample(20).pluck(:url)
3 إعجابات

لقد قمت بإعادة ربط التحميلات بشكل فردي، حيث أن الموقع ليس واسع النطاق في هذه المرحلة. كان أمر rake posts:missing_uploads مفيدًا في تحديد ما إذا كنت قد التقطتها جميعًا.

إعجابَين (2)

هل أنت متأكد من أن جميع عناوين URL تم إعادة تعيينها بشكل صحيح؟ ليس فقط للصور، بل يجب إعادة تعيين عناوين URL للصور الرمزية والأيقونات والنسخ الاحتياطية وما إلى ذلك. جرب الأمر أعلاه وانظر ما إذا كان عنوان URL الخاص بـ S3 يظهر في المخرجات.

3 إعجابات

الروابط عادت جميعها إلى النسبية. للأسف، بالنسبة للأشخاص الذين سيقرأون هذا المنشور في المستقبل، لست متأكدًا من أي مجموعة من مهام rake وإعادة بناء التطبيقات كانت سر نجاحي. يجب على شخص أكثر خبرة مني في Discourse إعداد دليل لا يُخطئ يوضح كيفية إنجاز ذلك.

كان استخدام أداة awscli كما وصفه Pravi أعلاه فعالًا لنسخ الملفات من S3.

6 إعجابات

أنا أيضًا مشوش جدًا.
في وقت سابق، كان لدي سلتان (buckets) مختلفتان في S3 في أوقات مختلفة. وأظهر أمر rake posts:missing_uploads أن هناك حوالي 500 منشور تفتقر إلى الملفات المرفقة أو تأثرت.

لكنني قررت بعد ذلك نسخ أصول السلتين إلى خادم Ubuntu محلي (على مثيل GCP). والآن، يظهر أن عدد الملفات المفقودة يتراوح بين 1000 ملف.

إذا نفذت الأمر Upload.all.sample(1000).pluck(:url)، سأحصل على مسارات مختلفة للملفات المرفقة، بعضها على الخادم المحلي، وبعضها على bucket1، وقلة قليلة على bucket2.

ما الذي يجب أن أفعله الآن؟ (حاليًا قمت بإعداد الملفات المرفقة على الخادم المحلي).

موقعي صغير، ويحتوي على حوالي 1000 منشور فقط خلال عامين.

إعجاب واحد (1)

يجب عليك إعادة تعيين رابط S3. هل يمكنك نشر ناتج الأمر Upload.all.sample(1000).pluck(:url)؟

إعجاب واحد (1)

شكرًا لك.

يمكنني المحاولة في ذلك، إذا كانت هناك فرصة جيدة للنجاح.

تعديل: قمت بذلك، لكن الصور اختفت تمامًا من منشوراتي. عند تمرير المؤشر فوق رمز الصورة البديل، لم يظهر أي رابط URL على الإطلاق. سابقًا، لم يكن يظهر أيقونة صورة صغيرة فحسب، بل أيضًا رابط الصورة.

أعطي حوالي 45 سطرًا من المخرجات. لا أعرف ما إذا كنت تريد مني لصق جميع الـ 1000 سطر من المخرجات هنا؟

=> ["//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)

أرى عدة صور رمزية معطلة على موقعك. أفترض أن السبب هو إما أنك قمت بحذف خزانة S3، أو أنك لم تقم بإعادة المعالجة بعد نسخ جميع الملفات مرة أخرى من S3. لماذا يوجد خزانتان في المخرجات؟

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

هل قمت بإعداد موقعك بخزانة واحدة ثم غيرتها إلى أخرى؟

3 إعجابات

عذراً، لقد فاتني إشعار ردك بطريقة ما. شكراً جزيلاً.

لم أحذف مستودع S3، لكنني بالفعل قمت بالتبديل بين المستودعات في وقت سابق (في ذلك الوقت لم أكن على دراية بتعقيداته). لذا كانت جميع أصولي موزعة على مستودعي S3، لكنني الآن قمت بنسخها يدوياً إلى الخادم المحلي أيضاً (/var/discourse/shared/web_only/uploads/default).

كيف يجب أن أواصل الأمر لحل هذه الفوضى؟

ملاحظة: أنا على دراية بالأوامر الأساسية للحاوية و Rails Console و AWS S3.

إعجاب واحد (1)