Czy istnieje sposób na połączenie się z zasobnikiem Amazon S3 za pomocą protokołu FTP lub SFTP zamiast wbudowanego interfejsu przesyłania plików Amazon w konsoli AWS? Wydaje się dziwne, że nie jest to łatwo dostępna opcja.
Czy istnieje sposób na połączenie się z zasobnikiem Amazon S3 za pomocą protokołu FTP lub SFTP zamiast wbudowanego interfejsu przesyłania plików Amazon w konsoli AWS? Wydaje się dziwne, że nie jest to łatwo dostępna opcja.
Odpowiedzi:
Istnieją trzy możliwości.
W konsoli Amazon AWS przejdź do AWS Transfer for SFTP i utwórz nowy serwer.
Na stronie serwera SFTP dodaj nowego użytkownika (lub użytkowników) SFTP.
Uprawnienia użytkowników są zarządzane przez powiązaną rolę AWS w usłudze IAM (na szybki start można skorzystać z polityki AmazonS3FullAccess ).
Rola musi mieć relację zaufania do transfer.amazonaws.com
.
Aby uzyskać szczegółowe informacje, zobacz mój przewodnik Konfigurowanie dostępu SFTP do Amazon S3 .
Po prostu zamontuj zasobnik za pomocą s3fs
systemu plików (lub podobnego) na serwerze Linux (np. Amazon EC2) i użyj wbudowanego serwera SFTP serwera, aby uzyskać dostęp do zasobnika.
s3fs
access-key-id:secret-access-key
do/etc/passwd-s3fs
Dodaj punkt mocowania łyżki do fstab
:
<bucket> /mnt/<bucket> fuse.s3fs rw,nosuid,nodev,allow_other 0 0
Aby uzyskać szczegółowe informacje, zobacz mój przewodnik Konfigurowanie dostępu SFTP do Amazon S3 .
Lub użyj dowolnego bezpłatnego „klienta FTP / SFTP” , który jest również „klientem S3” i nie musisz niczego konfigurować po stronie serwera. Na przykład mój WinSCP lub Cyberduck .
WinSCP ma nawet obsługę skryptów i interfejs .NET / PowerShell , jeśli chcesz zautomatyzować transfery.
root
powoduje późniejsze permission denied
problemy z transferem przy połączeniu ec2-user
przez SFTP. /mnt/<bucket>
folder jest własnością root
i również ma tę grupę root
.
allow_other
(lub -o allow_other
jeśli montowanie z wiersza poleceń s3fs) .. działa dla mnie. W moim przypadku dobrym pomysłem jest zapisanie plików z uprawnieniami tylko do odczytu (-o default_acl = public-read) (na prywatnym wiadrze).
Aktualizacja
S3 oferuje teraz w pełni zarządzaną usługę bramy SFTP dla S3, która integruje się z IAM i może być administrowana za pomocą aws-cli.
Istnieją teoretyczne i praktyczne powody, dla których nie jest to idealne rozwiązanie, ale działa ...
Możesz zainstalować usługę FTP / SFTP (taką jak proftpd) na serwerze linux, w EC2 lub we własnym centrum danych ... następnie zamontuj wiadro w systemie plików, w którym serwer ftp jest skonfigurowany do chroot, używając s3fs .
Mam klienta, który obsługuje zawartość z S3, a treść jest im dostarczana przez firmę zewnętrzną, która obsługuje tylko wypychanie ftp ... więc z pewnym wahaniem (z powodu niezgodności impedancji między S3 a rzeczywistym systemem plików), ale brakuje jej czas na napisanie odpowiedniego pakietu oprogramowania do serwera bramy FTP / S3 (co nadal zamierzam zrobić któregoś z dni), zaproponowałem i wdrożyłem dla nich to rozwiązanie kilka miesięcy temu i nie zgłosili żadnych problemów z systemem.
Jako bonus, ponieważ proftpd może chrootować każdego użytkownika do jego własnego katalogu domowego i "udawać" (o ile użytkownik może stwierdzić), że pliki należące do użytkownika proftpd są faktycznie własnością zalogowanego użytkownika, to segreguje każdego użytkownika ftp na „podkatalog” zasobnika i sprawia, że pliki innych użytkowników są niedostępne.
Występuje jednak problem z domyślną konfiguracją.
Gdy zaczniesz pobierać kilkadziesiąt lub setki plików, problem ujawni się, gdy ściągniesz listę katalogów, ponieważ ProFTPd będzie próbował czytać .ftpaccess
pliki w kółko, i znowu, i dla każdego pliku w katalogu,.ftpaccess
jest zaznaczona, aby zobaczyć, czy użytkownik powinien mieć możliwość jego przeglądania.
Możesz wyłączyć to zachowanie w ProFTPd, ale sugerowałbym, że najbardziej poprawną konfiguracją jest skonfigurowanie dodatkowych opcji -o enable_noobj_cache -o stat_cache_expire=30
w s3fs:
-o stat_cache_expire
(domyślnie nie wygasa)określ czas wygaśnięcia (w sekundach) dla wpisów w pamięci podręcznej statystyk
Bez tej opcji będziesz wysyłać mniej żądań do S3, ale nie zawsze będziesz niezawodnie wykrywać zmiany wprowadzone w obiektach, jeśli zewnętrzne procesy lub inne instancje s3fs również modyfikują obiekty w zasobniku. Wartość „30” w moim systemie została wybrana nieco arbitralnie.
-o enable_noobj_cache
(domyślnie wyłączone)włącz wpisy pamięci podręcznej dla obiektu, który nie istnieje. s3fs zawsze musi sprawdzić, czy plik (lub podkatalog) istnieje w obiekcie (ścieżce), gdy s3fs wykonuje jakąś komendę, ponieważ s3fs rozpoznał katalog, który nie istnieje i ma w sobie pliki lub podkatalogi. Zwiększa żądanie ListBucket i zmniejsza wydajność. Możesz określić tę opcję dla wydajności, s3fs zapamiętuje w pamięci podręcznej, że obiekt (plik lub katalog) nie istnieje.
Ta opcja pozwala s3fs zapamiętać, że tego .ftpaccess
nie było.
Bez związku z problemami z wydajnością, które mogą wystąpić w ProFTPd, które są rozwiązane przez powyższe zmiany, musisz również włączyć -o enable_content_md5
w s3fs.
-o enable_content_md5
(domyślnie wyłączone)weryfikacja przesłanych danych bez multipart by content-md5 header. Włącz wysyłanie nagłówka „Content-MD5” podczas przesyłania obiektu bez przesyłania wieloczęściowego. Jeśli ta opcja jest włączona, ma to pewien wpływ na wydajność s3fs podczas ładowania małego obiektu. Ponieważ s3fs zawsze sprawdza MD5 podczas przesyłania dużego obiektu, ta opcja nie wpływa na duży obiekt.
Jest to opcja, która nigdy nie powinna była być opcją - zawsze powinna być włączona, ponieważ jej brak pomija krytyczne sprawdzenie integralności, co daje jedynie znikomy wpływ na wydajność. Gdy obiekt jest przesyłany do S3 z rozszerzeniemContent-MD5:
nagłówkiem, S3 zweryfikuje sumę kontrolną i odrzuci obiekt, jeśli jest uszkodzony podczas . Jakkolwiek jest to mało prawdopodobne, wyłączenie tej kontroli bezpieczeństwa wydaje się krótkowzroczne.
Cytaty pochodzą ze strony podręcznika man s3fs. W oryginalnym tekście występują błędy gramatyczne.
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
- nie mogę zmienić żadnych uprawnień do folderów w folderze Mounted S3 po jego utworzeniu.
Odpowiedź z 2014 roku dla osób, które głosują w dół:
Cóż, S3 to nie FTP. Jest jednak wielu klientów obsługujących S3.
Prawie każdy znaczący klient FTP na OS X ma wsparcie, w tym Transmit i Cyberduck .
Jeśli korzystasz z systemu Windows, spójrz na Cyberduck lub CloudBerry .
Zaktualizowana odpowiedź na rok 2019:
AWS niedawno wydało usługę AWS Transfer for SFTP , która może zrobić to, czego szukasz.
Lub uruchom instancję Linux dla bramy SFTP w infrastrukturze AWS, która zapisuje przesłane pliki do zasobnika Amazon S3.
Obsługiwane przez Thorntech
Filezilla właśnie udostępniła wersję Pro swojego klienta FTP. Łączy się z zasobnikami S3 w usprawniony sposób, podobny do FTP. Sam go używam (bez żadnej przynależności) i działa świetnie.
WinSCp obsługuje teraz protokół S3
Najpierw upewnij się, że Twój użytkownik AWS z uprawnieniami dostępu S3 ma utworzony „Identyfikator klucza dostępu”. Musisz także znać „Tajny klucz dostępu”. Klucze dostępu są tworzone i zarządzane na stronie Użytkownicy w IAM Management Console.
Upewnij się, że wybrany jest nowy węzeł lokacji.
W węźle Nowa lokacja wybierz protokół Amazon S3.
Wprowadź identyfikator klucza dostępu użytkownika AWS i tajny klucz dostępu
Zapisz ustawienia witryny za pomocą przycisku Zapisz.
Zaloguj się za pomocą przycisku Zaloguj.
Amazon wypuścił usługi SFTP dla S3, ale obsługują one tylko SFTP (nie FTP ani FTPES) i mogą być kosztowne w zależności od okoliczności.
Jestem założycielem DocEvent.io i zapewniamy bramy FTP / S dla Twojego segmentu S3 bez konieczności uruchamiania serwerów lub martwienia się o infrastrukturę.
Istnieją również inne firmy, które zapewniają samodzielny serwer FTP, za który płacisz co miesiąc, i który może łączyć się z wiadrem S3 poprzez konfigurację oprogramowania, na przykład brickftp.com .
Wreszcie istnieją również aplikacje AWS Marketplace, które mogą pomóc, oto link wyszukiwania . Wiele z tych instancji uruchamia się w Twojej własnej infrastrukturze - oznacza to, że będziesz musiał samodzielnie zarządzać instancjami i aktualizować je, co z czasem może być trudne w utrzymaniu i konfiguracji.
Jak wskazywali inni plakaty, istnieją pewne ograniczenia związane z usługą AWS Transfer for SFTP. Musisz ściśle dostosować wymagania. Na przykład nie ma limitów, białych / czarnych list, ograniczeń typów plików, a dostęp nie oparty na kluczach wymaga usług zewnętrznych. Istnieje również pewien narzut związany z zarządzaniem użytkownikami i uprawnieniami dostępu, co może być problemem na dużą skalę.
Dla naszych klientów używamy bramy proxy SFTP S3 od około 5 lat. Podstawowe rozwiązanie jest opakowane w kolekcję usług Docker i wdrażane w dowolnym kontekście, nawet na lokalnych lub lokalnych serwerach programistycznych. Nasz przypadek użycia jest nieco inny, ponieważ nasze rozwiązanie koncentruje się na przetwarzaniu danych i potokach, a nie na udostępnianiu plików. W przykładzie Salesforce klient użyje SFTP jako metody transportu, wysyłając e-mail, kupując ... dane do punktu SFTP / S3. Jest to mapowane jako klucz obiektu na S3. Po przybyciu dane są pobierane, przetwarzane, kierowane i ładowane do magazynu. Mamy również dość duże wymagania audytowe dla każdego transferu, czego nie zapewniają dzienniki Cloudwatch dla AWS.
Jak wspomnieli inni, toczenie własnego jest również opcją. Korzystając z AWS Lightsail, możesz skonfigurować klaster, powiedzmy 4, instancji 10 $ 2 GB, używając Route 53 lub ELB.
Ogólnie rzecz biorąc, wspaniale jest widzieć, że AWS oferuje tę usługę i spodziewam się, że z czasem dojrzeje. Jednak w zależności od przypadku użycia alternatywne rozwiązania mogą być lepiej dopasowane.