AWS konsolundaki yerleşik Amazon dosya aktarım arabirimi yerine FTP veya SFTP ile bir Amazon S3 grubuna bağlanmanın bir yolu var mı? Bunun hazır bir seçenek olmaması garip görünüyor.
AWS konsolundaki yerleşik Amazon dosya aktarım arabirimi yerine FTP veya SFTP ile bir Amazon S3 grubuna bağlanmanın bir yolu var mı? Bunun hazır bir seçenek olmaması garip görünüyor.
Yanıtlar:
Üç seçenek vardır.
Amazon AWS Konsolunuzda, SFTP için AWS Aktarımı'na gidin ve yeni bir sunucu oluşturun.
SFTP sunucusu sayfasında yeni bir SFTP kullanıcısı (veya kullanıcıları) ekleyin.
Kullanıcıların izinleri, IAM hizmetindeki ilişkili bir AWS rolü tarafından yönetilir (hızlı bir başlangıç için AmazonS3FullAccess ilkesini kullanabilirsiniz ).
Rolün bir güven ilişkisi olmalıdır transfer.amazonaws.com
.
Ayrıntılar için Amazon S3'e SFTP erişimi kurma kılavuzum'a bakın .
Sadece kova kullanarak monte s3fs
Linux sunucusuna (örneğin Amazon EC2) dosya sistemini (veya benzeri) ve erişim için kova sunucunun yerleşik SFTP sunucusu kullanmak.
s3fs
access-key-id:secret-access-key
etmek/etc/passwd-s3fs
Bir kova montaj girişi ekleyin fstab
:
<bucket> /mnt/<bucket> fuse.s3fs rw,nosuid,nodev,allow_other 0 0
Ayrıntılar için Amazon S3'e SFTP erişimi kurma kılavuzum'a bakın .
Veya herhangi bir "S3 istemcisi" olan herhangi bir ücretsiz "FTP / SFTP istemcisi" kullanın ve sunucu tarafında herhangi bir kurulum yapmanız gerekmez. Örneğin, benim WinSCP veya Cyberduck .
Transferleri otomatikleştirmeniz gerekiyorsa WinSCP'nin komut dosyası ve .NET / PowerShell arayüzü bile vardır .
root
, SFTP permission denied
ile ec2-user
bağlanırken daha sonra aktarım sorunları sağlar . /mnt/<bucket>
klasörün sahibi root
ve grubu root
da var.
allow_other
(veya -o allow_other
s3fs komut satırından montaj yapılıyorsa) benim için çalışıyor. Dosyaları, benim durumumda (özel bir grupta) salt okunur izinler (-o default_acl = public-read) olarak yazmak da iyi bir fikirdir.
Güncelleme
S3 artık S3 için IAM ile entegre olan ve aws-cli kullanılarak yönetilebilen tam yönetilen bir SFTP Ağ Geçidi Hizmeti sunuyor .
Bunun mükemmel bir çözüm olmamasının teorik ve pratik nedenleri var, ama işe yarıyor ...
EC2'de veya kendi veri merkezinizde bir linux sunucusuna bir FTP / SFTP hizmeti (proftpd gibi) yükleyebilirsiniz ... daha sonra ftp sunucusunun s3fs kullanarak chot için yapılandırıldığı dosya sistemine bir kova monte edebilirsiniz .
S3 dışında içerik sunan bir istemcim var ve içerik onlara yalnızca ftp itmelerini destekleyen bir 3. taraf tarafından sağlanıyor ... yani, biraz tereddütle (S3 ile gerçek bir dosya sistemi arasındaki empedans uyumsuzluğu nedeniyle) ama eksik uygun bir FTP / S3 ağ geçidi sunucusu yazılım paketi yazma zamanı (hala bu günlerden birini yapmak niyetindeyim), birkaç ay önce bu çözümü önerdim ve dağıttım ve sistemle ilgili herhangi bir sorun bildirmediler.
Bonus olarak, proftpd her kullanıcıyı kendi giriş dizinine bağlayabildiğinden ve proftpd kullanıcısının sahip olduğu dosyaların oturum açmış kullanıcının sahip olduğunu "taklit" edebildiğinden, bu her ftp kullanıcısını grubun bir "alt dizini" olarak adlandırılır ve diğer kullanıcıların dosyalarına erişilemez hale gelir.
Ancak varsayılan yapılandırmada bir sorun var.
Onlarca veya yüzlerce dosya almaya başladığınızda, bir dizin listesini çektiğinizde sorun kendini gösterecektir, çünkü ProFTPd .ftpaccess
dosyaları tekrar tekrar ve tekrar tekrar ve dizindeki her dosya için okumaya çalışacaktır. .ftpaccess
kullanıcının görüntülemesine izin verilip verilmeyeceğini görmek için işaretlenir.
ProFTPd'de bu davranışı devre dışı bırakabilirsiniz, ancak en doğru yapılandırmanın -o enable_noobj_cache -o stat_cache_expire=30
s3fs'de ek seçenekleri yapılandırmak olduğunu öneririm:
-o stat_cache_expire
(varsayılan süre dolmaz)stat önbelleğindeki girişler için sona erme süresini (saniye) belirtme
Bu seçenek olmadan, S3'e daha az istekte bulunursunuz, ancak harici işlemler veya diğer s3fs örnekleri de kovadaki nesneleri değiştiriyorsa, nesnelerde yapılan değişiklikleri her zaman güvenilir bir şekilde keşfedemezsiniz. Sistemimdeki "30" değeri biraz keyfi seçildi.
-o enable_noobj_cache
(varsayılan devre dışıdır)var olmayan nesne için önbellek girdilerini etkinleştirin. s3fs her zaman komut (s3fs) komutunu verdiğinde dosya (ya da alt dizinin) var olup olmadığını kontrol etmelidir, çünkü s3fs mevcut olmayan ve kendi altında dosya ya da alt dizinleri olan bir dizini tanıdı. ListBucket isteğini artırır ve performansı kötü yapar. Performans için bu seçeneği belirleyebilirsiniz, s3fs stat önbelleğinde nesnenin (dosya veya dizin) mevcut olmadığını ezberler.
Bu seçenek s3fs'nin orada .ftpaccess
olmadığını hatırlamasını sağlar .
Yukarıdaki değişikliklerle çözülen ProFTPd ile ortaya çıkabilecek performans sorunları ile ilgili olarak, s3fs'de de etkinleştirmeniz gerekir -o enable_content_md5
.
-o enable_content_md5
(varsayılan devre dışıdır)content-md5 üstbilgisine göre çok parçalı olmadan yüklenen verilerin doğrulanması. Çok parçalı yayın olmadan bir nesne yüklerken "Content-MD5" başlığını göndermeyi etkinleştirin. Bu seçenek etkinleştirilirse, küçük nesne yüklerken s3fs'nin performansı üzerinde bazı etkileri vardır. Büyük nesne yüklerken s3fs her zaman MD5'i kontrol ettiğinden, bu seçenek büyük nesneyi etkilemez.
Bu, hiçbir zaman bir seçenek olmaması gereken bir seçenektir - her zaman etkinleştirilmelidir, çünkü bunu yapmamak sadece ihmal edilebilir bir performans avantajı için kritik bir bütünlük kontrolünü atlar. Bir nesne bir Content-MD5:
başlık ile S3'e yüklendiğinde , S3 sağlama toplamını doğrular ve taşıma sırasında bozulmuşsa nesneyi reddeder. Her ne kadar olası olmasa da, bu güvenlik kontrolünü devre dışı bırakmak kısa görüşlü gibi görünüyor.
Alıntılar s3fs'in man sayfasından. Dilbilgisi hataları orijinal metindir.
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
- Oluşturulduktan sonra Mounted S3 klasöründeki klasörlerde herhangi bir izni değiştiremiyorum.
2014'ten aşağı oy kullanan insanlar için cevap:
S3 FTP değil. Bununla birlikte, S3'ü destekleyen çok sayıda istemci var.
OS X'teki kayda değer her FTP istemcisinin Transmit ve Cyberduck dahil olmak üzere desteği vardır .
Windows kullanıyorsanız, Cyberduck veya CloudBerry'ye bakın .
2019 için cevap güncellendi:
AWS yakın zamanda aradığınız şeyi yapabilen AWS için AWS Aktarımı hizmetini yayınladı .
Veya AWS altyapınızda yüklenen dosyaları Amazon S3 grubunuza kaydeden SFTP Gateway için Linux örneğini döndürün .
Thorntech tarafından desteklenmektedir
Filezilla , FTP istemcilerinin Pro sürümünü yayınladı . Kolaylaştırılmış bir FTP benzeri deneyimde S3 kovalarına bağlanır. Kendim kullanıyorum (hiçbir bağlantı yok) ve harika çalışıyor.
WinSCp artık S3 protokolünü destekliyor
İlk olarak, S3 erişim izinlerine sahip AWS kullanıcınızda bir "Erişim anahtarı kimliği" oluşturulduğundan emin olun. Ayrıca “Gizli erişim anahtarı” nı da bilmeniz gerekir. Erişim anahtarları IAM Yönetim Konsolu'nun Kullanıcılar sayfasında oluşturulur ve yönetilir.
Yeni site düğümü seçildiğinden emin olun.
Yeni site düğümünde Amazon S3 protokolünü seçin.
AWS kullanıcı Erişim anahtarı kimliğinizi ve Gizli erişim anahtarınızı girin
Kaydet düğmesini kullanarak site ayarlarınızı kaydedin.
Giriş düğmesini kullanarak giriş yapın.
Amazon, S3 için SFTP hizmetleri yayınladı, ancak yalnızca SFTP (FTP veya FTPES değil) yapıyorlar ve koşullarınıza bağlı olarak maliyet engelleyici olabilirler.
DocEvent.io'nun Kurucusuyum ve sunucuları döndürmek veya altyapı hakkında endişelenmek zorunda kalmadan S3 grubunuz için FTP / S Ağ Geçitleri sağlıyoruz.
Yazılım yapılandırması yoluyla bir S3 grubuna bağlanabilen aya göre ödediğiniz bağımsız bir FTP sunucusu sağlayan başka şirketler de vardır, örneğin brickftp.com .
Son olarak, yardımcı olabilecek bazı AWS Marketplace uygulamaları da var, işte bir arama bağlantısı . Bu altyapılardaki bu örneklerin çoğu - bu, zaman içinde bakımı ve yapılandırılması zor olabilecek örnekleri kendiniz yönetmeniz ve yükseltmeniz gerektiği anlamına gelir.
Diğer posterlerin de işaret ettiği gibi, SFTP hizmeti için AWS Transferi ile ilgili bazı sınırlamalar vardır. Gereksinimleri yakından hizalamanız gerekir. Örneğin, kotalar, beyaz listeler / kara listeler, dosya türü sınırları yoktur ve anahtar tabanlı olmayan erişim için harici hizmetler gerekir. Ayrıca, kullanıcı yönetimi ve IAM ile ilgili, belirli bir acıya neden olabilecek belirli bir ek yük de vardır.
Müşterilerimiz için yaklaşık 5 yıldır SFTP S3 Proxy Gateway çalıştırıyoruz . Temel çözüm, bir Docker hizmetleri koleksiyonuna sarılır ve şirket içi veya yerel geliştirme sunucuları dahil olmak üzere, ihtiyaç duyulan her bağlamda dağıtılır. Bizim için kullanım durumu biraz farklıdır çünkü çözümümüz veri işleme ve dosya paylaşımına karşı boru hatlarıdır. Salesforce örneğinde, müşteri SFTP / S3 enpoint'e e-posta, satın alma ... verileri gönderme aktarım yöntemi olarak SFTP'yi kullanacaktır. Bu, S3'te bir nesne anahtarı ile eşlenir. Varışta, veriler alınır, işlenir, yönlendirilir ve bir depoya yüklenir. Ayrıca, AWS için Cloudwatch günlüklerinin doğrudan sağlamadığı her transfer için oldukça önemli denetim gereksinimlerimiz var.
Diğerlerinin de belirttiği gibi, kendiniz haddeleme de bir seçenektir. AWS Lightsail'i kullanarak Route 53 veya ELB kullanarak 4 $ 'lık 10GB'lık 2GB'lık bir küme oluşturabilirsiniz.
Genel olarak, AWS'nin bu hizmeti sunduğunu görmek harika ve zaman içinde olgunlaşmasını bekliyorum. Bununla birlikte, kullanım durumunuza bağlı olarak, alternatif çözümler daha uygun olabilir.