Saya menjawab pertanyaan yang sama di Stack Overflow .
s3fs memang solusi yang masuk akal, dan dalam kasus saya, saya telah memasangnya dengan proftpd dengan hasil yang sangat baik, terlepas dari masalah teoritis / potensial.
Pada saat saya menulis jawabannya, saya hanya mengatur ini untuk salah satu klien konsultan saya ... tetapi sejak itu, saya juga mulai meminum kool-aid saya sendiri dan menggunakannya dalam produksi di pekerjaan saya. Perusahaan kami bertukar data dengan mengunggah dan mengunduh file sepanjang hari di server sftp saya, yang menyimpan semuanya secara langsung di S3. Sebagai bonus, sistem ekspor laporan saya - yang menulis spreadsheet excel langsung ke S3 - dapat mengekspor laporan "ke server FTP" dengan hanya memasukkannya langsung ke dalam server ftp server, dengan metadata yang sesuai untuk menampilkan uid, gid, dan mode setiap file. (s3fs menggunakan header x-amz-meta-uid, -gid, dan -mode untuk meniru izin sistem file). Ketika klien masuk ke server, file laporan hanya ... ada.
Saya pikir solusi yang ideal mungkin akan menjadi sftp ke layanan S3 gateway, tapi saya masih belum sempat mendesainnya, karena solusi ini bekerja sangat baik ... dengan beberapa peringatan, tentu saja:
Tidak semua nilai default untuk s3fs adalah waras. Anda mungkin ingin menentukan opsi ini:
-o enable_noobj_cache # s3fs has a huge performance hit for large directories without this enabled
-o stat_cache_expire=30 # the ideal time will vary according to your usage
-o enable_content_md5 # it's beyond me why this safety check is disabled by default
Mungkin lebih baik menggunakan wilayah selain US-Standard, karena itulah satu-satunya wilayah yang tidak menawarkan konsistensi baca-setelah-tulis pada objek baru. (Atau, jika Anda perlu menggunakan US-Standard, Anda dapat menggunakan nama host yang hampir tidak didokumentasikan your-bucket.s3-external-1.amazonaws.com
dari wilayah us-east-1 untuk mencegah permintaan Anda dari geo-routed, yang dapat meningkatkan konsistensi.)
Saya telah mengaktifkan versi objek pada bucket, yang s3fs sama sekali tidak sadari. Keuntungan dari hal ini adalah bahwa bahkan jika suatu file harus di "stomped," saya selalu dapat membuka versi bucket untuk memulihkan file "ditimpa". Versi objek dalam S3 dirancang secara brilian sedemikian rupa sehingga klien S3 yang tidak menyadari versi sama sekali tidak dinonaktifkan atau bingung, karena jika Anda tidak melakukan panggilan REST yang sadar versi, respons yang dikembalikan S3 kompatibel dengan klien yang memiliki tidak ada konsep versi.
Perhatikan juga bahwa mentransfer data ke S3 bebas dari biaya transfer data. Anda hanya membayar harga per permintaan. Mentransfer data dari S3 ke EC2 di suatu wilayah juga bebas dari biaya transfer data. Hanya ketika Anda mentransfer S3 ke Internet, ke Cloudfront, atau ke wilayah AWS lain Anda membayar biaya transfer. Jika Anda ingin menggunakan penyimpanan redundansi pengurangan harga yang lebih rendah, s3fs mendukungnya -o use_rrs
.
Sebagai tambahan yang lucu, Anda akan selalu mendapatkan perasaan hangat yang kabur ketika Anda melihat 256 terabyte ruang kosong (dan 0 digunakan, karena perhitungan ukuran yang sebenarnya tidak praktis karena fakta bahwa S3 adalah toko objek, bukan sistem file ).
$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/xvda1 7.9G 1.4G 6.2G 18% /
s3fs 256T 0 256T 0% /srv/s3fs/example-bucket
Tentu saja, Anda dapat memasang ember di mana saja. Saya kebetulan memilikinya di / srv / s3fs.