رفع AWS S3 - غير قادر على توقيع الطلب بدون تعيين بيانات الاعتماد

مرحباً يا رفاق،

أنا أستخدم الإصدار 3.4.0.beta3-dev، وأواجه الخطأ المذكور (ولكن فقط في واجهة المستخدم، وليس في السجلات) عند محاولة تحميل صورة إلى موضوع.

إعداداتي هي كالتالي:


["s3_upload_bucket", "<bucketname>/discourse-uploads"],
["s3_backup_bucket", "<bucketname>/discourse-backups"],
["s3_region", "eu-central-1"],
["s3_use_acls", "f"],
["enable_direct_s3_uploads", "f"],
["enable_s3_uploads", "t"],
["s3_access_key_id", ""],
["s3_secret_access_key", ""]
]

وأنا أستخدم ملف تعريف مثيل EC2 وأتجاوز بيانات الاعتماد.

أتلقى الخطأ في واجهة المستخدم:

لكن السجل يخبرني أن كل شيء على ما يرام:

بدأ POST "/uploads.json?client_id=bb1ab05dbb9d4d1f9930d05f28b17f94" لـ 10.x.x.x في 2024-12-13 11:46:35 +0000
معالجة بواسطة UploadsController#create بصيغة JSON
المعلمات: {"upload_type"=>"composer", "pasted"=>"true", "name"=>"image.png", "type"=>"image/png", "sha1_checksum"=>"a0f0fe1abd27ce137e0e1b2a28cd9348a08112ff", "file"=>#<ActionDispatch::Http::UploadedFile:0x00007f50b8b01db8 @tempfile=#<Tempfile:/tmp/RackMultipart20241213-386-i7xkqa.png>, @content_type="image/png", @original_filename="image.png", @headers="Content-Disposition: form-data; name=\"file\"; filename=\"image.png\"\r\nContent-Type: image/png\r\n">, "client_id"=>"bb1ab05dbb9d4d1f9930d05f28b17f94"}
اكتمل 200 OK في 36 مللي ثانية (العروض: 0.1 مللي ثانية | ActiveRecord: 0.0 مللي ثانية (0 استعلام، 0 مخزن مؤقت) | GC: 0.0 مللي ثانية)
اكتمل 418 في 23 مللي ثانية (العروض: 0.2 مللي ثانية | ActiveRecord: 0.0 مللي ثانية (0 استعلام، 0 مخزن مؤقت) | GC: 0.4 مللي ثانية)

الحاوية فارغة بعد ذلك (أقوم بإعداد هذا للتو مع حاوية جديدة).

أي تلميحات؟

شكرا،

WS

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

تأكد من أن مثيل EC2 الخاص بك لديه الأذونات الصحيحة للتحميل إلى S3، مثل s3:PutObject و s3:GetObject. تحقق مرة أخرى من منطقة S3 الخاصة بك وإعدادات الوصول. قد ترغب أيضًا في تجربة تمكين s3_use_acls: true إذا لزم الأمر. يمكنك أيضًا اختبار التحميل مباشرة باستخدام AWS CLI لاستبعاد مشكلات الأذونات. وإذا كنت لا تستخدم التحميلات المباشرة، فما عليك سوى ترك enable_direct_s3_uploads: f كما هي. يجب أن يساعد ذلك في حل المشكلة!

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

همممم…

تبدو سياسة أدوار EC2Instance الخاصة بي كالتالي:

[
    {
    "Action": [
        "s3:PutObject",
        "s3:AbortMultipartUpload",
        "s3:PutLifecycleConfiguration",
        "s3:PutObjectVersionAcl",
        "s3:PutBucketCORS",
        "s3:DeleteObject",
        "s3:PutObjectAcl",
        "s3:Get*",
        "s3:List*"
    ],
    "Resource": [
        "arn:aws:s3:::\u003cdata-bucket\u003e",
        "arn:aws:s3:::\u003cdata-bucket\u003e/*",
        "arn:aws:s3:::\u003cbackup-bucket\u003e",
        "arn:aws:s3:::\u003cbackup-bucket\u003e/*"
    ],
    "Effect": "Allow"
}
]

تبدو أذونات الحاوية كالتالي، لكن Security Hub يصرخ بالفعل بأنها مفتوحة جدًا :frowning:

يمكنني تحميل الملفات من مثيل ec2 دون مشاكل باستخدام سطر الأوامر (يعمل instanceprofile في هذا الصدد)

تحديث: لاحظت أن تقدم التحميل يصل إلى 100%، وبعد ذلك فقط أحصل على الخطأ (كان عليّ أن أكون سريعًا مع Greenshot لالتقاط هذا :smiley: )

همممم … يبدو أنه نجح في تحميل الأجزاء المتعددة، لكنه لم يتمكن من إنهاء العملية بعد ذلك.

حاولت الآن إعداد مستخدم IAM باستخدام بيانات الاعتماد ومنحه أذونات s3:*، والآن يعمل التحميل، ولكن لا يمكن لـ discourse عرضه بعد ذلك:

بما أنني أعمل في شركة، وهناك سياسات تحكم الخدمة (SCP) نشطة لحساباتنا، يبدو أن الوصول العام محظور بشكل عام

يبدو أنه لا يوجد S3 بالنسبة لي (وكل من لديه نفس القيود على حساباته)

أستسلم الآن … :frowning:

آمل أن ينجح هذا معك: https://www.youtube.com/watch?v=qjebh5AOZ8E. سينجح هذا معك إذا لم يتم حظره صراحةً من قبل شركتك.

كنت أتلقى نفس رسالة الخطأ التي تلقاها الناشر الأصلي هنا، مع تكوين مشابه. لقد تحققت من قدرتي على الحصول على كائنات S3 ووضعها باستخدام AWS CLI من مثيل EC2 الخاص بي على الرغم من أن Discourse لم يتمكن من القيام بذلك.

لقد أنشأت مستخدم IAM جديدًا بنفس سياسة الأذونات مثل دور مثيل EC2 الخاص بي واستخدمت مفتاح وصول بدلاً من ملف تعريف مثيل EC2، والآن تعمل التحميلات بشكل جيد.

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

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.