يبدأ تحميل الملفات المحلية إلى DigitalOcean Spaces (S3) باستخدام rake uploads:migrate_to_s3 وينقل بعض الملفات، ثم يفشل فجأة في ملف واحد مع ظهور خطأ Aws::S3::Errors::SignatureDoesNotMatch.
عند رفع هذا الملف يدويًا باستخدام السكربت المذكور في Extend S3 configuration for other S3 API compatible services - #4 by rishabh وإعادة تشغيل السكربت، يتم رفع ملفات إضافية لكنه يفشل مرة أخرى في ملف آخر.
هل يمكن لأحد من الفريق الاطلاع على هذه المشكلة؟ لدي ما يقرب من 50 جيجابايت من الملفات التي أحتاج إلى نقلها من التخزين المحلي إلى S3 في المستقبل القريب (يعمل إعداد الملفات الجديدة وتحميلها دون مشاكل).
سأكون سعيدًا حتى لو كان الحل مجرد حل مؤقت: لقد راجعت الكود to_s3_migration.rb وتمكنت من تحديد الملفات المشكلة، لكن عند رفعها إلى S3 باستخدام Aws::S3::Resource من السكربت المذكور أعلاه، تفتقد بيانات وصف الملف (metadata) ويُفقد الاسم الأصلي للملف عند التحميل.
أظهرت نتائج البحث على الويب العديد من المشاكل المتعلقة بـ SignatureDoesNotMatch: أحدها يشير إلى أن إصدار خوارزمية التوقيع التي يستخدمها الحزمة (gem) قد يكون خاطئًا، لكن هذا يتجاوز مهاراتي الحالية للتحقق منه.
إليك إعدادات Rake:
DISCOURSE_S3_ACCESS_KEY_ID="id" \
DISCOURSE_S3_SECRET_ACCESS_KEY="secret" \
DISCOURSE_S3_REGION="sfo2" \
DISCOURSE_S3_BUCKET="mybucket/uploads" \
DISCOURSE_S3_ENDPOINT="https://sfo2.digitaloceanspaces.com" \
DISCOURSE_S3_CDN_URL="https://mybucket.sfo2.cdn.digitaloceanspaces.com" \
rake uploads:migrate_to_s3 --trace