نقل التحميلات القديمة إلى S3

بينما يتم تحميل ملفاتي الجديدة بشكل صحيح على Amazon S3، فإن هذا الأمر يفشل في نقل الملفات القديمة من الجهاز المحلي إلى S3:

DISCOURSE_S3_BUCKET="bucketname" DISCOURSE_S3_REGION="ap-south-1" DISCOURSE_S3_ACCESS_KEY_ID="AKIchangedabitUNM2" DISCOURSE_S3_SECRET_ACCESS_KEY="rX6Pf3C_changedabit_YKKtdVrnbw6B" DISCOURSE_S3_CDN_URL="https://bucketname.s3.ap-south-1.amazonaws.com" rake uploads:migrate_to_s3

في حين أن هذا الأمر كان يعمل بامتياز قبل 15 يومًا.
اليوم، يعطي الخطأ التالي:

Checking if default already migrated...
7 of 14 uploads are not migrated to S3. S3 migration failed for db 'default'.
1 posts are not remapped to new S3 upload URL. S3 migration failed for db 'default'.
Looking for missing uploads on: default

0 post uploads are missing.

No posts require rebaking
Migrating uploads to S3 for 'default'...
Some uploads were not migrated to the new scheme. Please run these commands in the rails console

SiteSetting.migrate_to_new_scheme = true
Jobs::MigrateUploadScheme.new.execute(nil)

كما قمت بتشغيل الأمرين التاليين في وحدة تحكم Rails، لكنهما لم يبدوا أنهما أفادا بأي شيء:

SiteSetting.migrate_to_new_scheme = true
Jobs::MigrateUploadScheme.new.execute(nil)

ملاحظة: تم تكوين ملفاتي لتكون في مجلد فرعي داخل الدلو bucketname/uploads.

هل لديك أي فكرة هنا @vinothkannans؟

هل يعيد أي أخطاء؟ أنا غير قادر على رؤية أي تغييرات كبيرة حديثة في كود مهمة uploads:migrate_to_s3 من نوع rake.

واجهتُ مشكلةً مشابهة. كانت تتعلق بعدم تطابق مسار الملفات المرفقة مع ما يتوقعه الاختبار (مثل وجود كلمة ‘default’ ناقصة في مسار شيء ما).

ما قمتُ به (بشكل عام وربما غير مفيد) هو فحص ما يفعله البحث للعثور على تلك الملفات المرفقة التي يعتبرها سيئة، ثم إصلاحها.

حظيت بحلها بالصدفة وبطريقة لا زلت غير متأكد منها كيف تم حلها.

غيّرت الأمر عدة مرات، معظمها بإضافة أو إزالة كلمة ‘dualstack’ من الأمر ومن حقل عنوان CDN في إعدادات Discourse: https://bxyzbucket1.s3.dualstack.ap-south-1.amazonaws.com
لكن يبدو أن ذلك لم ينجح بعد. ثم بشكل عشوائي، قمت بتنفيذ الأمرين المتطابقين (المذكورين في المنشور الأصلي) مرة أخرى في وحدة تحكم Rails.
والخطوة الوحيدة التي قمت بها بشكل عشوائي حول هذا الوقت كانت إضافة كلمة /uploads إلى اسم الدلو في الأمر.

وبشكل ‘عشوائي’ (أحتاج إلى كلمة عشوائية أخرى هنا :slight_smile: )، نجحت.
لذلك، لا يمكنني القول من كان البطل في هذا الحل.
شكرًا لك على الاستماع على أي حال.

أي خطأ ظهر أو تم عرضه، فقد قمت بتضمينه بالفعل في منشوري الأصلي. لكنني أتفق على أن هذا الخطأ/الرسالة لم يكن مفيدًا جدًا في التشخيص.

للأسف، اليوم مرة أخرى، ظننت أنه نظرًا لأنني لم أستطع فهم المشكلة في عملية الهجرة، فقد قمت بإنشاء ملف واحد محليًا. ثم حاولت نقله مرة أخرى إلى S3 باستخدام الأمر التالي:

DISCOURSE_S3_BUCKET="bxyzbucket1/uploads" DISCOURSE_S3_REGION="ap-south-1" DISCOURSE_S3_ACCESS_KEY_ID="AKIAchangedBRF" DISCOURSE_S3_SECRET_ACCESS_KEY="H0P6Oo8changed1AuLkRDCQK8" DISCOURSE_S3_CDN_URL="https://bxyzbucket1.s3.ap-south-1.amazonaws.com/uploads" rake uploads:migrate_to_s3

وعلى الرغم من أنه نقل الملف الجديد الواحد إلى S3، إلا أنه ظهر مع هذا الخطأ:

لم يتم هجرة 1 من أصل 14 ملفًا مرفوعًا إلى S3. فشلت هجرة S3 لقاعدة البيانات 'default'.
لم يتم إعادة تعيين 1 منشور إلى عنوان URL الجديد للملف المرفوع على S3. فشلت هجرة S3 لقاعدة البيانات 'default'.

ما الذي يعنيه هذا الخطأ؟ هل يمكن أن يشكل مشكلة إذا كان هناك آلاف الصور التي يجب نقلها من ‘محلي >> S3’؟ @vinothkannans

يمكنك تشغيل الأمر التالي في وحدة تحكم Rails ونسخ الإخراج هنا:

Upload.by_users.where("url NOT LIKE '//%' AND url NOT LIKE '#{GlobalSetting.relative_url_root}/uploads/default/original/_X/%'")

عذرًا لأنني كنت غائبًا عن هذه العملية لبعض الوقت.
أقوم بتشغيل أمر rails الذي أرسلته، لكن لا يظهر أي مخرجات:

ما زلت أحصل على الخطأ: “فشل هجرة S3 لقاعدة البيانات ‘default’”.
وعلى الرغم من أن منشورات الصور تظهر بشكل صحيح في سلة التخزين (bucket) الخاصة بي وعلى الموقع، إلا أن شعارات الموقع وما شابه ذلك (تحت الإعدادات > العلامة التجارية) مفقودة، ولا أستطيع حتى تحديثها بنسخ جديدة. فهي تبقى فارغة فقط.

كما قمت بتشغيل (بدون أخطاء): rake posts:rebake_uncooked_posts و rake posts:rebake

@vinothkannans حتى بعد مرور عام، عندما أقوم بتكرار العملية لسبب ما، تظهر نفس الرسالة خطأ.