سؤال

لا يمكنني معرفة ذلك.

هذا ما أريد أن يحدث ...

لديّ تطبيقات يقوم المستخدمون بتحميل الملفات إلى S3 باستخدام Boto و Django. أريد أن تكون هذه الملفات خاصة ويمكن الوصول إليها فقط من خلال تطبيقي باستخدام بيانات اعتماد API الخاصة بي.

لذا ، إذا قام المستخدم بتحميل صورة عبر تطبيقي ، فإن الطريقة الوحيدة التي يمكن أن يقوم بها أو أي شخص آخر تنزيلها عبر حسابه على تطبيقي. هل هذا ممكن ، وإذا كان الأمر كذلك ، فكيف يمكنني إعداده باستخدام قواعد ACL الخاصة بـ Boto. لا أحتاج إلى الكود ، (آمل أن أتمكن من معرفة ذلك ، فقط على المشي من خلال كيفية القيام بذلك.

هل لهذا معنى؟ أعلم أنني لا أرسلها جيدًا وأعتذر مقدمًا. أيضا ، شكرا للمساعدة.

هل كانت مفيدة؟

المحلول

مستندات ACL الخاصة بـ BOTO هنا. أقترح فقط استخدام private "السياسة المعلبة" - نظرًا لأن المستخدمين ليس لديهم حسابات S3 على أي حال ، فهي أبسط فكرة. سيتعين على تطبيقك بالطبع تتبع "يمتلك" المستخدم الذي يمتلك الملفات (التي يجب أن تكون نموذج Django بسيط للغاية!).

نصائح أخرى

أعتقد أنك قد تبحث في المنطقة الخاطئة لما تريد إنجازه. تتيح لك واجهة ACL منح أذونات ، لكنها تعتمد على المستخدمين الذين لديهم حسابات Amazon S3. alex martelli اقترح استخدام private السياسة المعلبة ، وأنا أوافق - هذا سيمنع أي حساب ولكن لك من القدرة على الوصول إلى الدلاء/مفاتيحك.

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

Django Storages لديه بالفعل طرق لهذه المشكلة ولديه الواجهة الخلفية. لا تتدحرج بنفسك باستثناء التنشيط.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top