@Pfaffman تم فصل هذه المعلومات الخاصة بـ Google Cloud، والتي لا تتناسب بالضرورة مع المنشور الأصلي، ولكن يجب حفظها لمن يواجهون صعوبة مع Google Cloud.
مرحباً،
شكراً على النصيحة، لكنها لم تعمل معي حتى قمت بتغيير الدور من “مالك كائن التخزين القديم” (Storage Legacy Object Owner) إلى “مالك حاوية التخزين القديمة” (Storage Legacy Bucket Owner).
وهذا ما هو مكتوب تحديداً في التلميح أثناء اختيار الدور:
مالك كائن التخزين القديم (Storage Legacy Object Owner)
الوصول للقراءة/الكتابة للكائنات الموجودة بدون سرد .
مالك حاوية التخزين القديمة (Storage Legacy Bucket Owner)
الوصول للقراءة والكتابة للحاويات الموجودة مع سرد الكائنات/إنشائها/حذفها.
الآن يعمل، بما في ذلك السرد الذي يتيح النسخ الاحتياطي التلقائي! يا للروعة!!
3 إعجابات
حول استخدام S3 على Google Buckets:
كما ذكرت هنا:
https://meta.discourse.org/t/using-object-storage-for-uploads-s3-clones/148916/334
يمكنني تأكيد أن القائمة تعمل وأن النسخ الاحتياطي التلقائي يعمل باستخدام حساب خدمة لديه دور مالك مستودع التخزين القديم (Storage Legacy Bucket Owner) على المستودع.
كن على علم بأن استخدام S3 لمستودعات Google يعني تحديد منطقة لها نفس الاسم في Amazon كما في Google.
أجد أنه من السخيف أن تضطر إلى الاختيار من قائمة منسدلة مع التحقق من صحة الواجهة الخلفية (حاولت العبث بواجهة برمجة التطبيقات دون نجاح) بدلاً من كتابتها.
هذا يعني أنه لا يمكنك استخدام مستودع في أوروبا على سبيل المثال لأن البادئة في Amazon هي EU و EUROPE في Google، ولا يمكنك استخدام مناطق متعددة.
AWS:
اسم المنطقة
الرمز
شرق الولايات المتحدة (أوهايو)
us-east-2
شرق الولايات المتحدة (فرجينيا الشمالية)
us-east-1
غرب الولايات المتحدة (كاليفورنيا الشمالية)
us-west-1
غرب الولايات المتحدة (أوريغون)
us-west-2
أفريقيا (كيب تاون)
af-south-1
آسيا والمحيط الهادئ (هونغ كونغ)
ap-east-1
آسيا والمحيط الهادئ (جاكرتا)
ap-southeast-3
آسيا والمحيط الهادئ (مومباي)
ap-south-1
آسيا والمحيط الهادئ (أوساكا)
ap-northeast-3
آسيا والمحيط الهادئ (سيول)
ap-northeast-2
آسيا والمحيط الهادئ (سنغافورة)
ap-southeast-1
آسيا والمحيط الهادئ (سيدني)
ap-southeast-2
آسيا والمحيط الهادئ (طوكيو)
ap-northeast-1
كندا (وسط)
ca-central-1
الصين (بكين)
cn-north-1
الصين (نينغشيا)
cn-northwest-1
أوروبا (فرانكفورت)
eu-central-1
أوروبا (أيرلندا)
eu-west-1
أوروبا (لندن)
eu-west-2
أوروبا (ميلانو)
eu-south-1
أوروبا (باريس)
eu-west-3
أوروبا (ستوكهولم)
eu-north-1
الشرق الأوسط (البحرين)
me-south-1
أمريكا الجنوبية (ساو باولو)
sa-east-1
Google:
أجد أيضًا أنه من السخيف الاضطرار إلى تعيين هذه الخيارات في إعدادات الملفات. لم أستخدم S3 لتحميل الملفات، بل استخدمته فقط للنسخ الاحتياطي. يلزم وجود مستودع مختلف للتحميلات والنسخ الاحتياطية، ولكن هناك مكان واحد فقط لتعيين المنطقة وهو في إعدادات الملفات.
آمل أن يوفر هذا الوقت على أي شخص آخر يحاول اكتشاف ذلك.
ملاحظة: قمت بتصحيح الأخطاء باستخدام https://discourse.example.com/logs/
…
فشل في سرد النسخ الاحتياطية من S3: قيد الموقع المحدد غير صالح. – مشكلة المنطقة
…
فشل في سرد النسخ الاحتياطية من S3: تم رفض الوصول. – مالك مستودع التخزين القديم بدلاً من مالك مستودع التخزين القديم
إعجاب واحد (1)
Falco
(Falco)
20 يوليو 2022، 5:17م
3
إذا قمت بالإعداد باستخدام متغيرات البيئة كما هو موضح في المنشور الأصلي، وقمت بتعيين DISCOURSE_S3_ENDPOINT كما هو موصى به، فسيتم تجاهل DISCOURSE_S3_REGION مما يجعل هذه مشكلة غير موجودة.
إعجابَين (2)
شكرا،
المسألة هي أنني أستخدم تثبيت bitnami vm بنقرة واحدة من سوق Google Cloud.
من المحتمل أن يكون من الممكن تخصيص متغيرات البيئة ولكن ليس بشكل مباشر.
تعيين نقطة النهاية في واجهة المستخدم لا يتجاهل المنطقة.
شكرا على أي حال
شكرا جزيلا لك!
بالفعل نسيت إضافة المقتطف.
للأسف، أحصل على الخطأ التالي:
Aws::S3::Errors::InvalidArgument: Invalid argument.
وهذا يتوافق تمامًا مع الخطأ الذي حصلت عليه أثناء استخدام واجهة المستخدم الرسومية، ولكنه لا يقدم الكثير من المعلومات لحل المشكلة…
وجدت هذا الموضوع الذي يشير إلى احتمال وجود عدم توافق مع Google Storage مقارنة بـ Amazon S3.
هل يمكن أن يكون هذا معطلاً لـ Google Storage؟
المكدس الكامل عند تشغيل المهمة يدويًا:
root@discourse-2-app:/var/www/discourse# sudo -E -u discourse bundle exec rake s3:upload_assets --trace
** Invoke s3:upload_assets (first_time)
** Invoke environment (first_time)
** Execute environment
** Invoke s3:ensure_cors_rules (first_time)
** Invoke environment
** Execute s3:ensure_cors_rules
Installing CORS rules...
skipping
** Execute s3:upload_assets
Uploading: assets/docker-manager-app-ecd2975f42c4096057a046c086d6a43905c8a18442900d5293ae9a3489422bb0.js
rake aborted!
Aws::S3::Errors::InvalidArgument: Invalid argument.
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/aws-sdk-core-3.130.2/lib/seahorse/client/plugins/raise_response_errors.rb:17:in `call'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/aws-sdk-s3-1.114.0/lib/aws-sdk-s3/plugins/sse_cpk.rb:24:in `call'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/aws-sdk-s3-1.114.0/lib/aws-sdk-s3/plugins/dualstack.rb:27:in `call'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/aws-sdk-s3-1.114.0/lib/aws-sdk-s3/plugins/accelerate.rb:56:in `call'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/aws-sdk-core-3.130.2/lib/aws-sdk-core/plugins/checksum_algorithm.rb:111:in `call'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/aws-sdk-core-3.130.2/lib/aws-sdk-core/plugins/jsonvalue_converter.rb:22:in `call'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/aws-sdk-core-3.130.2/lib/aws-sdk-core/plugins/idempotency_token.rb:19:in `call'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/aws-sdk-core-3.130.2/lib/aws-sdk-core/plugins/param_converter.rb:26:in `call'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/aws-sdk-core-3.130.2/lib/seahorse/client/plugins/request_callback.rb:71:in `call'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/aws-sdk-core-3.130.2/lib/aws-sdk-core/plugins/response_paging.rb:12:in `call'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/aws-sdk-core-3.130.2/lib/seahorse/client/plugins/response_target.rb:24:in `call'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/aws-sdk-core-3.130.2/lib/seahorse/client/request.rb:72:in `send_request'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/aws-sdk-s3-1.114.0/lib/aws-sdk-s3/client.rb:12369:in `put_object'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/aws-sdk-s3-1.114.0/lib/aws-sdk-s3/object.rb:1472:in `put'
/var/www/discourse/lib/s3_helper.rb:75:in `upload'
/var/www/discourse/lib/tasks/s3.rake:37:in `block in upload'
/var/www/discourse/lib/tasks/s3.rake:36:in `open'
/var/www/discourse/lib/tasks/s3.rake:36:in `upload'
/var/www/discourse/lib/tasks/s3.rake:192:in `block (2 levels) in <main>'
/var/www/discourse/lib/tasks/s3.rake:191:in `each'
/var/www/discourse/lib/tasks/s3.rake:191:in `block in <main>'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.6/lib/rake/task.rb:281:in `block in execute'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.6/lib/rake/task.rb:281:in `each'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.6/lib/rake/task.rb:281:in `execute'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.6/lib/rake/task.rb:219:in `block in invoke_with_call_chain'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.6/lib/rake/task.rb:199:in `synchronize'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.6/lib/rake/task.rb:199:in `invoke_with_call_chain'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.6/lib/rake/task.rb:188:in `invoke'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.6/lib/rake/application.rb:160:in `invoke_task'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.6/lib/rake/application.rb:116:in `block (2 levels) in top_level'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.6/lib/rake/application.rb:116:in `each'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.6/lib/rake/application.rb:116:in `block in top_level'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.6/lib/rake/application.rb:125:in `run_with_threads'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.6/lib/rake/application.rb:110:in `top_level'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.6/lib/rake/application.rb:83:in `block in run'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.6/lib/rake/application.rb:186:in `standard_exception_handling'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.6/lib/rake/application.rb:80:in `run'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.6/exe/rake:27:in `<top (required)>'
/var/www/discourse/vendor/bundle/ruby/2.7.0/bin/rake:25:in `load'
/var/www/discourse/vendor/bundle/ruby/2.7.0/bin/rake:25:in `<top (required)>'
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.20/lib/bundler/cli/exec.rb:58:in `load'
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.20/lib/bundler/cli/exec.rb:58:in `kernel_load'
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.20/lib/bundler/cli/exec.rb:23:in `run'
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.20/lib/bundler/cli.rb:485:in `exec'
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.20/lib/bundler/vendor/thor/lib/thor/command.rb:27:in `run'
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.20/lib/bundler/vendor/thor/lib/thor/invocation.rb:127:in `invoke_command'
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.20/lib/bundler/vendor/thor/lib/thor.rb:392:in `dispatch'
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.20/lib/bundler/cli.rb:31:in `dispatch'
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.20/lib/bundler/vendor/thor/lib/thor/base.rb:485:in `start'
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.20/lib/bundler/cli.rb:25:in `start'
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.20/exe/bundle:48:in `block in <top (required)>'
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.20/lib/bundler/friendly_errors.rb:120:in `with_friendly_errors'
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.20/exe/bundle:36:in `<top (required)>'
/usr/local/bin/bundle:25:in `load'
/usr/local/bin/bundle:25:in `<main>'
Tasks: TOP => s3:upload_assets
ملاحظة: أنا لا أفكر في تغيير الحاوية ولكن أتساءل عما سيحدث للصور التي تم تحميلها سابقًا على قرص الجهاز الافتراضي.
تعديل (تم الحل):
@gerhard @Falco
لقد وجدت سبب المشكلة عن طريق تمكين http_wire_trace .
الاستجابة “argument invalid” من googleapis تشرح ذلك:
لا يمكن إدراج ACL قديم لكائن عندما يكون الوصول على مستوى الحاوية الموحد ممكّنًا. اقرأ المزيد على Uniform bucket-level access | Cloud Storage | Google Cloud
لقد قمت بتمكين ACL مفصل على الحاوية بدلاً من ACL الموحد لأن الرأس الذي تم تعيينه أثناء التحميل يحدد أنه عام. (كان لدي ACL موحد وقمت بتعيين الحاوية بأكملها لتكون عامة).
ليس لدي الحق في تحديث المنشور الأصلي ولكني أعتقد أنه يجب أن يذكر أنه لكي تعمل حاويات Google، يجب أن يكون لحساب الخدمة دور Storage Legacy Bucket Owner على حاوية النسخ الاحتياطي، ويجب أن تستخدم حاوية التحميل ACL مفصل.
آمل أن يوفر هذا الوقت للمجتمع.
شكرًا مرة أخرى لـ @Falco @pfaffman @gerhard @tuanpembual على المساعدة هنا.
إعجابَين (2)