وصول FTP/SFTP إلى دلو Amazon S3




amazon-s3 (4)

هل هناك طريقة للاتصال بدلو Amazon S3 مع FTP أو SFTP بدلاً من واجهة نقل الملفات المضمنة في Amazon في وحدة تحكم AWS؟ يبدو غريبا أن هذا ليس خيار متاح بسهولة.


أو إصدار Spin من Linux لمطاريف SFTP في البنية الأساسية لـ AWS التي تحفظ الملفات التي تم تحميلها على دلو Amazon S3.

بدعم من Thorntech


حسنا ، S3 ليس FTP. هناك الكثير والكثير من العملاء الذين يدعمون S3 ، ومع ذلك.

يحتوي كل عميل FTP ملحوظ على OS X على دعم ، بما في ذلك Transmit و Cyberduck .

إذا كنت تستخدم نظام التشغيل Windows ، فألقِ نظرة على Cyberduck أو CloudBerry .


هناك أسباب نظرية وعملية لعدم وجود حل مثالي ، ولكنها تعمل ...

يمكنك تثبيت خدمة FTP / SFTP (مثل proftpd) على خادم linux ، إما في EC2 أو في مركز البيانات الخاص بك ... ثم قم بتركيب دلو في نظام الملفات حيث تم تكوين خادم ftp ليقوم بتشجيع ، باستخدام s3fs .

لدي عميل يقدم محتوى خارج S3 ، ويتم تقديم المحتوى لهم من قبل طرف ثالث يدعم فقط دفع ftp ... لذلك ، مع بعض التردد (بسبب عدم تطابق المعاوقة بين S3 ونظام ملفات فعلي) ولكن ينقصه في الوقت المناسب لكتابة حزمة برامج خادم عبّارة FTP / S3 المناسبة (التي ما زلت أعتزم القيام بها في أحد هذه الأيام) ، اقترحت ونشرت هذا الحل لها منذ عدة أشهر ، ولم تبلغ عن أي مشاكل في النظام.

كمكافأة ، حيث أن proftpd يمكن أن يستخلص كل مستخدم في دليله الخاص و "يتظاهر" (بقدر ما يمكن للمستخدم أن يقول) أن الملفات التي يملكها مستخدم proftpd هي في الواقع مملوكة للمستخدم الذي قام بتسجيل الدخول ، وهذا يعزل كل مستخدم ftp إلى "دليل فرعي" للمجموعة ، ويجعل ملفات المستخدمين الآخرين غير قابلة للوصول.

هناك مشكلة في التكوين الافتراضي ، ومع ذلك.

بمجرد أن تبدأ في الحصول على بضع عشرات أو مئات الملفات ، ستظهر المشكلة نفسها عند سحب قائمة الدليل ، لأن ProFTPd سيحاول قراءة ملفات .ftpaccess على ، مرارا وتكرارا ، ولكل ملف في يتم فحص الدليل .ftpaccess لمعرفة ما إذا كان يجب السماح للمستخدم .ftpaccess .

يمكنك تعطيل هذا السلوك في ProFTPd ، لكنني أقترح أن يكون التوصيف الأكثر استخدامًا هو تكوين خيارات إضافية -o enable_noobj_cache -o stat_cache_expire=30 في s3fs:

-o stat_cache_expire (الافتراضي لا تنتهي صلاحيته)

حدد مدة الصلاحية (بالثواني) للإدخالات في ذاكرة التخزين المؤقت الأساسية

بدون هذا الخيار ، ستقدم عددًا أقل من الطلبات إلى S3 ، ولكنك لن تكتشف دائمًا أيضًا التغييرات التي يتم إجراؤها على الكائنات إذا كانت العمليات الخارجية أو مثيلات أخرى من s3fs تقوم أيضًا بتعديل الكائنات في المجموعة. تم اختيار القيمة "30" في نظامي بشكل تعسفي إلى حد ما.

-o enable_noobj_cache ( -o enable_noobj_cache الافتراضي هو التعطيل)

تمكين إدخالات ذاكرة التخزين المؤقت للكائن غير الموجود. يجب على s3fs دائماً التحقق من وجود الملف (أو الدليل الفرعي) تحت الكائن (المسار) عندما تقوم s3fs ببعض الأوامر ، حيث أن s3fs قد تعرفت على دليل غير موجود ولديه ملفات أو أدلة فرعية تحت نفسه. يزيد طلب ListBucket ويجعل الأداء سيئاً. يمكنك تحديد هذا الخيار للأداء ، ويحفظ s3fs في ذاكرة التخزين المؤقت الأساسي أن الكائن (ملف أو دليل) غير موجود.

يسمح هذا الخيار لـ s3fs بتذكر أن .ftpaccess لم يكن موجودًا.

لا علاقة لقضايا الأداء التي يمكن أن تنشأ مع ProFTPd ، والتي يتم حلها من خلال التغييرات المذكورة أعلاه ، تحتاج أيضا إلى تمكين -o enable_content_md5 في s3fs.

-o enable_content_md5 ( -o enable_content_md5 الافتراضي هو التعطيل)

التحقق من البيانات التي تم تحميلها دون استخدام multipart حسب رأس المحتوى - md5. تمكين إرسال رأس "المحتوى - MD5" عند تحميل كائن بدون نشر متعدد الأجزاء. إذا تم تمكين هذا الخيار ، فله بعض التأثيرات على أداء s3fs عند تحميل كائن صغير. لأن s3fs دائمًا يتحقق MD5 عند تحميل كائن كبير ، لا يؤثر هذا الخيار على كائن كبير.

هذا خيار لم يكن يجب أن يكون خيارًا مطلقًا - يجب أن يتم تمكينه دائمًا ، لأن عدم القيام بذلك يتجاوز التحقق من السلامة الحرجة للحصول على فائدة أداء لا تذكر. عندما يتم تحميل كائن إلى S3 باستخدام عنوان Content-MD5: ، سيقوم S3 بالتحقق من صحة المجموع الاختباري ورفض الكائن إذا كان معطلاً أثناء النقل. على الرغم من أنه من غير المحتمل أن يكون ذلك ، فإنه يبدو من قصر النظر لتعطيل فحص السلامة هذا.

ونقلت من صفحة الرجل من s3fs. الأخطاء النحوية موجودة في النص الأصلي.


ما عليك s3fs تحميل الدلو باستخدام نظام ملفات s3fs (أو ما شابه) إلى خادم Linux (مثل Amazon EC2) واستخدام خادم SFTP المدمج في الخادم للوصول إلى الدلو.

  • تثبيت s3fs
  • إضافة بيانات اعتماد الأمان في نموذج access-key-id:secret-access-key إلى /etc/passwd-s3fs
  • إضافة إدخال تركيب bucket إلى fstab :

    <bucket> /mnt/<bucket> fuse.s3fs rw,nosuid,nodev,allow_other 0 0
    

لمزيد من التفاصيل ، راجع دليلي إعداد وصول SFTP إلى Amazon S3 .

أو استخدام أي "عميل FTP / SFTP" ، وهو أيضًا "عميل S3" ، وليس لديك أي إعداد من جانب الخادم. على سبيل المثال ، WinSCP أو Cyberduck .