@Falco هل هذا لا يزال هو الحال؟ أعتقد أنني قرأت شيئًا عن مشكلات حديثة في استخدام AWS ولكني لا أستطيع العثور على الموضوع مرة أخرى.
أواجه العديد من المشكلات في استخدام AWS S3 باتباع المواضيع ذات الصلة كأدلة.
النسخ الاحتياطي يعمل كما هو متوقع ولكن استخدام Cloudfront كشبكة توصيل محتوى (CDN) أو إلغاء التعليق على DISCOURSE_USE_S3 و/أو DISCOURSE_S3_BUCKET يتسبب في ظهور مؤشر تحميل دائم.
أشتبه في أن لدي شيئًا تم تكوينه بشكل خاطئ في حاوية التحميلات و/أو توزيع Cloudfront ولكني لم أتمكن من العثور على خطأ. كل من حاوية التحميلات وحاوية النسخ الاحتياطي تقع خلف التوزيع والنسخ الاحتياطي يعمل بشكل جيد، فماذا يعني ذلك؟؟؟
FAILED
--------------------
Pups::ExecError: cd /var/www/discourse && sudo -E -u discourse bundle exec rake s3:upload_assets فشل مع الإرجاع #<Process::Status: pid 8484 exit 1>
مكان الفشل: /usr/local/lib/ruby/gems/3.3.0/gems/pups-1.3.0/lib/pups/exec_command.rb:131:in `spawn'
فشل التنفيذ مع المعلمات {"cd"=>"$home", "cmd"=>["sudo -E -u discourse bundle exec rake s3:upload_assets", "sudo -E -u discourse bundle exec rake s3:expire_missing_assets"]}
فشل التهيئة برمز خروج 1
** FAILED TO BOOTSTRAP ** يرجى التمرير لأعلى والبحث عن رسائل خطأ سابقة، قد يكون هناك أكثر من واحد.
أتفق
على الرغم من عدم استخدام سياسة حاوية (bucket policy) على حاوية النسخ الاحتياطي، إلا أن إضافة سياسة إلى حاوية التحميلات أدت إلى إزالة فشل التمهيد (bootstrap failure).
يمكن العثور على ملف json الخاص بالسياسة في CloudFront > التوزيعات (Distributions) > التوزيع الخاص بك (your distribution) > تحرير المصدر (Edit origin)
لسوء الحظ، يستمر رمز التحميل الدائم (perpetual throbber).
تعديل ملكية الكائن (Object Ownership) و قوائم التحكم في الوصول (ACLs) لا يغير النتيجة.
الإعدادات الحالية. أعتقد أنها الإعدادات الموصى بها أو ربما أنا مرتبك.
بعد تغيير الإعدادات، تحتاج إلى تشغيل مهمة rant لتحميل الأصول.
أيضًا، يمكنك فتح وحدة تحكم المطور (developer console) والتحقق مما إذا كانت الملفات التي يحاول الوصول إليها موجودة في الحاوية (bucket) أو ما إذا كانت هناك مشكلة في شبكة توصيل المحتوى (cdn).
./launcher enter app rake posts:rebake rake uploads:migrate_to_s3 rake posts:rebake_uncooked_posts
لا يزال رمز التحميل (Throbber) مستمرًا.
rake uploads:migrate_to_s3 ينتج خطأ
Migrating uploads to S3 for 'default'...
Some uploads were not migrated to the new scheme. Running the migration, this may take a while...
rake aborted!
FileStore::ToS3MigrationError: Some uploads could not be migrated to the new scheme. You need to fix this manually. (FileStore::ToS3MigrationError)
/var/www/discourse/lib/file_store/to_s3_migration.rb:156:in `migrate_to_s3'
/var/www/discourse/lib/file_store/to_s3_migration.rb:59:in `migrate'
/var/www/discourse/lib/tasks/uploads.rake:126:in `migrate_to_s3'
/var/www/discourse/lib/tasks/uploads.rake:106:in `block in migrate_to_s3_all_sites'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rails_multisite-7.0.0/lib/rails_multisite/connection_management/null_instance.rb:49:in `with_connection'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rails_multisite-7.0.0/lib/rails_multisite/connection_management/null_instance.rb:36:in `each_connection'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rails_multisite-7.0.0/lib/rails_multisite/connection_management.rb:17:in `each_connection'
/var/www/discourse/lib/tasks/uploads.rake:104:in `migrate_to_s3_all_sites'
/var/www/discourse/lib/tasks/uploads.rake:100:in `block in <main>'
/usr/local/bin/bundle:25:in `load'
/usr/local/bin/bundle:25:in `<main>'
Tasks: TOP => uploads:migrate_to_s3
يتم استدعاء الأصول من شبكة توصيل المحتوى (cdn)، ولكن هل هي موجودة هناك؟ إذا لم تكن كذلك، فهل هي في الحاوية (bucket)؟ وهل يمكن الوصول إليها من الحاوية؟
من المحتمل أن تكون لديك بعض عمليات الرفع في حاوية مختلفة أو شيء يمنعها من أن تكون في المكان المتوقع. إذا كان الأمر كذلك، فستحتاج إلى إصلاحها يدويًا كما هو مذكور. ستحتاج إلى الوصول إلى وحدة التحكم (console) ورؤية مكانها في سجل الرفع.
هل تبدو مهمة رفع الأصول (upload assets task) وكأنها تعمل؟ يستمر رمز التحميل (throbber) في العمل لأن الأصول الأخرى لا يتم تحميلها.
نعم إنها موجودة، الملفات موجودة في الحاوية (bucket) تحت اسم assets\nيمكن الوصول إليها: https://repeal-obbba-discuss-uploads.s3.us-east-1.amazonaws.com/assets/logo-815195ae.png\n\nهناك حاويتان فقط، uploads و backups. النسخ الاحتياطية تعمل بشكل جيد.\n\nأعطت rake s3:upload_assets الخطأ التالي: \nrake aborted!\nAws::S3::Errors::AccessControlListNotSupported: The bucket does not allow ACLs (Aws::S3::Errors::AccessControlListNotSupported)\n\nقمت بالتبديل إلى تمكين قوائم التحكم في الوصول (ACLs) وشغلت مرة أخرى s3:upload_assetsتعديل: uploads:migrate_to_s3 ولكن…\nFileStore::ToS3MigrationError: Some uploads could not be migrated to the new scheme. You need to fix this manually. (FileStore::ToS3MigrationError)\n\n??? You need to fix this manually. (FileStore::ToS3MigrationError)
يبدو أنك أصلحت الحاوية (bucket) وهي الآن قادرة على تحميل الأصول (assets)، لذا يجب أن يعمل الموقع الآن. التعامل مع عمليات التحميل التي لن تتم ترحيلها هي مشكلة أخرى (معقدة).
نعم. الشهادة لا تتطابق مع اسم المضيف. إنها تتطابق مع *.cloudfront.net
هذا يعمل: https://repeal-obbba-discuss-uploads.s3.us-east-1.amazonaws.com/assets/logo-815195ae.png
هذا لا يعمل: https://discourse-cdn.repealobbba.org/assets/start-discourse-6f03a463.br.js
هذا يعمل: https://repeal-obbba-discuss-uploads.s3.us-east-1.amazonaws.com/assets/start-discourse-6f03a463.br.js
لذا تحتاج إلى تغيير شبكة توصيل المحتوى (CDN) الخاصة بـ s3 إلى https://repeal-obbba-discuss-uploads.s3.us-east-1.amazonaws.com – أوه، أعتقد أن هذا هو عنوان الحاوية (bucket)، لذا لن يكون مثاليًا، ولكنه سيعمل.
شكرًا للتأكيد! بعد رؤية هذا، قمت بإعادة ضبط DISCOURSE_S3_CDN_URL: إلى amazonassigned.cloudfront.net على أمل أن يحل مشكلات الشهادة وعنوان URL.
أعدت البناء وأعدت تشغيل جميع أوامر rake المذكورة في الوثائق. rake posts:rebake rake uploads:migrate_to_s3لا يزال يولد FileStore::ToS3MigrationError rake posts:rebake_uncooked_posts