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.
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.
Jawaban:
Ada tiga opsi.
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 .
Hanya pasang bucket menggunakan s3fs
sistem file (atau yang serupa) ke server Linux (mis. Amazon EC2) dan gunakan server SFTP bawaan server untuk mengakses bucket.
s3fs
access-key-id:secret-access-key
ke/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 .
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.
root
memberikan permission denied
masalah transfer nanti saat menghubungkan dengan ec2-user
melalui SFTP. /mnt/<bucket>
folder dimiliki oleh root
dan memiliki grup root
juga.
allow_other
(atau -o allow_other
jika 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).
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 .ftpaccess
file berulang-ulang, dan lagi, dan lagi, dan untuk setiap file dalam direktori, .ftpaccess
dicentang 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=30
di 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 .ftpaccess
itu 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_md5
di 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.
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.
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.
Atau putar instance Linux untuk SFTP Gateway di infrastruktur AWS Anda yang menyimpan file yang diunggah ke bucket S3 Amazon Anda.
Didukung oleh Thorntech
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.
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.
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.
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.