Akses FTP / SFTP ke Amazon S3 Bucket [ditutup]

146

Apakah ada cara untuk terhubung ke ember Amazon S3 dengan FTP atau SFTP daripada antarmuka transfer file built-in Amazon di konsol AWS? Tampaknya aneh bahwa ini bukan pilihan yang tersedia.

zgall1
sumber
2
AWS dirilis pada November, 2018 sepenuhnya dikelola Layanan SFTP yang memungkinkan transfer file langsung masuk dan keluar dari Amazon S3. Transfer AWS untuk SFTP
mitaka

Jawaban:

100

Ada tiga opsi.

  • Anda dapat menggunakan layanan SFTP yang dikelola asli yang baru-baru ini ditambahkan oleh Amazon (yang lebih mudah diatur).
  • Atau Anda dapat memasang bucket ke sistem file di server Linux dan mengakses file menggunakan SFTP seperti file lain di server (yang memberi Anda kontrol lebih besar).
  • Atau Anda bisa menggunakan klien (GUI) yang secara alami mendukung protokol S3 (apa yang gratis).

Layanan SFTP yang Dikelola

  • Di Konsol AWS Amazon Anda, buka AWS Transfer untuk SFTP dan buat server baru.

  • Di halaman server SFTP, tambahkan pengguna SFTP baru (atau pengguna).

    • Izin pengguna diatur oleh peran AWS terkait dalam layanan IAM (untuk memulai cepat, Anda dapat menggunakan kebijakan AmazonS3FullAccess ).

    • Peran tersebut harus memiliki hubungan kepercayaan dengan transfer.amazonaws.com.

Untuk detailnya, lihat panduan saya Mengatur akses SFTP ke Amazon S3 .


Mounting Bucket ke Server Linux

Hanya pasang bucket menggunakan s3fssistem file (atau yang serupa) ke server Linux (mis. Amazon EC2) dan gunakan server SFTP bawaan server untuk mengakses bucket.

  • Pasang s3fs
  • Tambahkan kredensial keamanan Anda dalam formulir access-key-id:secret-access-keyke/etc/passwd-s3fs
  • Tambahkan entri pemasangan ember ke fstab:

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

Untuk detailnya, lihat panduan saya Mengatur akses SFTP ke Amazon S3 .


Gunakan Klien S3

Atau gunakan "FTP / SFTP client" gratis , itu juga "klien S3" , dan Anda tidak memiliki pengaturan apa pun di sisi server. Sebagai contoh, saya WinSCP atau Cyberduck .

WinSCP bahkan memiliki skrip dan antarmuka .NET / PowerShell , jika Anda perlu mengotomatiskan transfer.

Martin Prikryl
sumber
2
Setelah bucket dipasang sebagai rootmemberikan permission deniedmasalah transfer nanti saat menghubungkan dengan ec2-usermelalui SFTP. /mnt/<bucket>folder dimiliki oleh rootdan memiliki grup rootjuga.
elvismdev
1
@elvismdev / others - Mount sebagai pengguna ftp (menggunakan opsi uid / gid) dan pastikan sudah terpasang dengan allow_other(atau -o allow_otherjika memasang dari baris perintah s3fs) .. berfungsi untuk saya. Ini juga merupakan ide yang baik untuk menulis file sebagai izin baca-saja (-o default_acl = baca-publik) dalam kasus saya (di ember pribadi).
bshea
66

Memperbarui

S3 sekarang menawarkan Layanan Gateway SFTP yang dikelola sepenuhnya untuk S3 yang terintegrasi dengan IAM dan dapat dikelola menggunakan aws-cli.


Ada alasan teoretis dan praktis mengapa ini bukan solusi yang sempurna, tetapi berhasil ...

Anda dapat menginstal layanan FTP / SFTP (seperti proftpd) di server linux, baik di EC2 atau di pusat data Anda sendiri ... kemudian pasang ember ke sistem file tempat server ftp dikonfigurasi untuk chroot, menggunakan s3fs .

Saya punya klien yang menyajikan konten di luar S3, dan konten diberikan kepada mereka oleh pihak ke-3 yang hanya mendukung ftp push ... jadi, dengan sedikit keraguan (karena ketidakcocokan impedansi antara S3 dan sistem file aktual) tetapi kurang saat menulis paket perangkat lunak server gateway FTP / S3 yang tepat (yang saya masih berniat melakukannya hari ini), saya mengusulkan dan menggunakan solusi ini untuk mereka beberapa bulan yang lalu dan mereka belum melaporkan masalah dengan sistem.

Sebagai bonus, karena proftpd dapat chroot setiap pengguna ke direktori home mereka sendiri dan "berpura-pura" (sejauh yang dapat diketahui pengguna) bahwa file yang dimiliki oleh pengguna proftpd sebenarnya dimiliki oleh pengguna yang login, ini memisahkan setiap pengguna ftp ke dalam "subdirektori" dari bucket, dan membuat file pengguna lain tidak dapat diakses.


Namun, ada masalah dengan konfigurasi default.

Setelah Anda mulai mendapatkan beberapa puluh atau ratusan file, masalahnya akan muncul dengan sendirinya ketika Anda menarik daftar direktori, karena ProFTPd akan berusaha membaca .ftpaccessfile berulang-ulang, dan lagi, dan lagi, dan untuk setiap file dalam direktori, .ftpaccessdicentang untuk melihat apakah pengguna harus diizinkan untuk melihatnya.

Anda dapat menonaktifkan perilaku ini di ProFTPd, tetapi saya akan menyarankan bahwa konfigurasi yang paling benar adalah mengonfigurasi opsi tambahan -o enable_noobj_cache -o stat_cache_expire=30di s3fs:

-o stat_cache_expire (default tidak kedaluwarsa)

tentukan waktu kedaluwarsa (detik) untuk entri dalam cache stat

Tanpa opsi ini, Anda akan membuat lebih sedikit permintaan ke S3, tetapi Anda juga tidak akan selalu dapat dengan andal menemukan perubahan yang dilakukan pada objek jika proses eksternal atau instance lain dari s3fs juga memodifikasi objek dalam bucket. Nilai "30" di sistem saya dipilih agak sewenang-wenang.

-o enable_noobj_cache (standar dinonaktifkan)

aktifkan entri cache untuk objek yang tidak ada. s3fs selalu harus memeriksa apakah file (atau sub direktori) ada di bawah objek (path) ketika s3fs melakukan beberapa perintah, karena s3fs telah mengenali direktori yang tidak ada dan memiliki file atau subdirektori di bawahnya sendiri. Ini meningkatkan permintaan ListBucket dan membuat kinerja buruk. Anda dapat menentukan opsi ini untuk kinerja, s3fs menghafal dalam cache stat bahwa objek (file atau direktori) tidak ada.

Opsi ini memungkinkan s3fs untuk mengingat bahwa .ftpaccessitu tidak ada.


Tidak terkait dengan masalah kinerja yang dapat timbul dengan ProFTPd, yang diselesaikan dengan perubahan di atas, Anda juga perlu mengaktifkannya -o enable_content_md5di s3fs.

-o enable_content_md5 (standar dinonaktifkan)

memverifikasi data yang diunggah tanpa multipartai dengan header konten-md5. Aktifkan untuk mengirim tajuk "Content-MD5" saat mengunggah objek tanpa memposting multi-bagian. Jika opsi ini diaktifkan, ia memiliki beberapa pengaruh pada kinerja s3fs ketika mengunggah objek kecil. Karena s3fs selalu memeriksa MD5 saat mengunggah objek besar, opsi ini tidak mempengaruhi objek besar.

Ini adalah opsi yang seharusnya tidak pernah menjadi opsi - itu harus selalu diaktifkan, karena tidak melakukan ini melewati pemeriksaan integritas kritis hanya untuk manfaat kinerja yang dapat diabaikan. Ketika suatu objek diunggah ke S3 dengan Content-MD5:header, S3 akan memvalidasi checksum dan menolak objek jika rusak dalam perjalanan. Namun tidak mungkin itu mungkin, kelihatannya picik untuk menonaktifkan pemeriksaan keamanan ini.

Kutipan berasal dari halaman manual s3fs. Kesalahan tata bahasa ada dalam teks asli.

Michael - sqlbot
sumber
4
dapatkah Anda menguraikan alasan mengapa solusi ini tidak ideal?
fernio
2
@ MarscoMarsala perbaikan untuk direktori besar telah ditambahkan ke jawabannya.
Michael - sqlbot
1
@ Michael-sqlbot apakah Anda sudah mencoba menggunakan perintah "AllowOverride off" di konfigurasi ProFTPd untuk membuatnya berhenti mencoba membaca file ".ftpaccess" sepenuhnya?
Greg Dubicki
1
Saya sudah mencoba semuanya dan hanya dapat mengatur pengguna: grup / izin pada tingkat folder tempat bucket S3 dipasang. Kemudian izin tersebut merambat ke setiap folder di S3. Saya sudah mencoba banyak hal termasuk banyak variasi pada perintah S3FS ini sudo s3fs bucket-name /local-mount-folder-name/ -o iam_role=sftp-server -o allow_other -o umask=022 -o uid=501 -o gid=501- Saya tidak dapat mengubah izin pada folder di folder S3 yang Dipasang setelah dibuat.
T. Brian Jones
1
@Sverre Saya masih menggunakan solusi ini dalam produksi. Itu tidak memberiku masalah.
Michael - sqlbot
24

Jawaban dari 2014 untuk orang-orang yang memilih saya:

S3 bukan FTP. Namun, ada banyak klien yang mendukung S3.

Hampir setiap klien FTP yang terkenal di OS X memiliki dukungan, termasuk Transmit dan Cyberduck .

Jika Anda menggunakan Windows, lihat Cyberduck atau CloudBerry .

Jawaban yang diperbarui untuk 2019:

AWS baru-baru ini merilis layanan AWS Transfer untuk SFTP , yang dapat melakukan apa yang Anda cari.

Ryan Parman
sumber
2
Cyberduck bekerja sangat mudah jika Anda seorang pemula server seperti saya. Cukup klik pada Open Connection, pilih S3 dari dropdown, dan masukkan kredensial saya. Jauh lebih mudah daripada beberapa opsi yang disebutkan di atas!
Marquizzo
7

Atau putar instance Linux untuk SFTP Gateway di infrastruktur AWS Anda yang menyimpan file yang diunggah ke bucket S3 Amazon Anda.

Didukung oleh Thorntech

mitaka
sumber
2
Kami telah menggunakan SFTP Gateway dalam produksi untuk proyek-proyek besar selama beberapa tahun. Kami telah menemukan itu lebih dapat diandalkan daripada s3fs
Jeff
3

Filezilla baru saja merilis versi Pro dari klien FTP mereka. Terhubung ke bucket S3 dalam pengalaman seperti FTP yang disederhanakan. Saya menggunakannya sendiri (tidak ada afiliasi apa pun) dan ini berfungsi dengan baik.

petezurich
sumber
3

WinSCp sekarang mendukung protokol S3

Pertama, pastikan pengguna AWS Anda dengan izin akses S3 memiliki "ID kunci akses" yang dibuat. Anda juga harus tahu "Kunci akses rahasia". Kunci akses dibuat dan dikelola pada halaman Pengguna dari IAM Management Console.

Pastikan simpul situs baru dipilih.

Pada simpul situs baru, pilih protokol Amazon S3.

Masukkan ID kunci akses pengguna AWS Anda dan kunci akses Rahasia

Simpan pengaturan situs Anda menggunakan tombol Simpan.

Login menggunakan tombol Login.

Subrata Fouzdar
sumber
2

Amazon telah merilis layanan SFTP untuk S3, tetapi mereka hanya melakukan SFTP (bukan FTP atau FTPES) dan mereka dapat menjadi penghalang biaya tergantung pada keadaan Anda.

Saya adalah Pendiri DocEvent.io , dan kami menyediakan FTP / S Gateways untuk bucket S3 Anda tanpa harus memutar server atau khawatir tentang infrastruktur.

Ada juga perusahaan lain yang menyediakan server FTP mandiri yang Anda bayar bulan yang dapat terhubung ke bucket S3 melalui konfigurasi perangkat lunak, misalnya brickftp.com .

Terakhir ada juga beberapa aplikasi AWS Marketplace yang dapat membantu, berikut adalah tautan pencarian . Banyak dari instance putar ini di infrastruktur Anda sendiri - ini berarti Anda harus mengelola dan memutakhirkannya sendiri yang mungkin sulit untuk dipelihara dan dikonfigurasi dari waktu ke waktu.

Mariusz
sumber
DocEvents terlihat bagus tetapi memiliki terlalu banyak batasan pada rencana gratis ... Saya bahkan tidak bisa mencoba layanan ...
D.Dimitrioglo
1

Seperti yang ditunjukkan poster lainnya, ada beberapa batasan dengan AWS Transfer untuk layanan SFTP. Anda perlu menyelaraskan persyaratan. Misalnya, tidak ada kuota, daftar putih / daftar hitam, batas jenis file, dan akses berbasis bukan kunci memerlukan layanan eksternal. Ada juga overhead tertentu yang berkaitan dengan manajemen pengguna dan IAM, yang bisa menjadi masalah besar.

Kami telah menjalankan SFTP S3 Proxy Gateway selama sekitar 5 tahun bagi pelanggan kami. Solusi inti dibungkus dalam kumpulan layanan Docker dan digunakan dalam konteks apa pun yang diperlukan, bahkan pada server pengembangan lokal atau lokal. Kasus penggunaan bagi kami sedikit berbeda karena solusi kami adalah pemrosesan data terfokus dan saluran pipa vs berbagi file. Dalam contoh Salesforce, pelanggan akan menggunakan SFTP sebagai metode transportasi mengirim email, membeli ... data ke titik SFTP / S3. Ini memetakan kunci objek pada S3. Setelah tiba, data diambil, diproses, dialihkan, dan dimuat ke gudang. Kami juga memiliki persyaratan audit yang cukup signifikan untuk setiap transfer, sesuatu yang tidak secara langsung disediakan oleh log Cloudwatch untuk AWS.

Seperti yang telah disebutkan, menggulirkan sendiri juga merupakan pilihan. Menggunakan AWS Lightsail Anda dapat mengatur sebuah cluster, katakanlah 4, dari $ 10 instance 2GB menggunakan Route 53 atau ELB.

Secara umum, sangat menyenangkan melihat AWS menawarkan layanan ini dan saya berharap akan matang seiring waktu. Namun, tergantung pada kasus penggunaan Anda, solusi alternatif mungkin lebih cocok.

Thomas Spicer
sumber