it-swarm.com.de

FTP / SFTP-Zugriff auf einen Amazon S3-Bucket

Gibt es eine Möglichkeit, über FTP oder SFTP eine Verbindung zu einem Amazon S3-Bucket herzustellen, anstatt über die integrierte Amazon-Dateiübertragungsschnittstelle in der AWS-Konsole? Scheint seltsam, dass dies keine sofort verfügbare Option ist.

131
zgall1

Es gibt drei Möglichkeiten.

  • Sie können einen systemeigenen verwalteten SFTP-Dienst verwenden, der kürzlich von Amazon hinzugefügt wurde (was einfacher einzurichten ist).
  • Sie können den Bucket auch in ein Dateisystem auf einem Linux-Server einbinden und wie alle anderen Dateien auf dem Server über SFTP auf die Dateien zugreifen (wodurch Sie eine bessere Kontrolle erhalten).
  • Oder Sie können einfach einen (GUI-) Client verwenden, der das S3-Protokoll nativ unterstützt (was kostenlos ist).

Managed SFTP Service

  • Gehen Sie in Ihrer Amazon AWS-Konsole zu AWS Transfer for SFTP und erstellen Sie einen neuen Server.

  • Fügen Sie auf der SFTP-Serverseite einen neuen SFTP-Benutzer (oder neue Benutzer) hinzu.

    • Die Berechtigungen der Benutzer unterliegen einer zugeordneten AWS-Rolle im IAM-Dienst (für einen schnellen Start können Sie die AmazonS3FullAccess-Richtlinie verwenden).

    • Die Rolle muss eine Vertrauensbeziehung zu transfer.amazonaws.com Haben.

Weitere Informationen finden Sie in meinem Handbuch Einrichten eines SFTP-Zugriffs auf Amazon S .


Mounten von Bucket an Linux Server

Hängen Sie den Bucket einfach mit dem Dateisystem s3fs (Oder ähnlichem) an einen Linux-Server (z. B. Amazon EC2) und verwenden Sie den integrierten SFTP-Server des Servers, um auf den Bucket zuzugreifen.

  • Installiere den s3fs
  • Fügen Sie Ihre Sicherheitsdaten in einem Formular access-key-id:secret-access-key Zu /etc/passwd-s3fs Hinzu.
  • Fügen Sie einen Eintrag für die Schaufelmontage zu fstab hinzu:

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

Weitere Informationen finden Sie in meinem Handbuch Einrichten eines SFTP-Zugriffs auf Amazon S .


Verwenden Sie den S3-Client

Oder verwenden Sie einen freien "FTP/SFTP-Client" , der auch ein "S3-Client" ist , und Sie haben nichts auf dem Server eingerichtet. Zum Beispiel mein WinSCP oder Cyberduck .

WinSCP hat sogar scripting und . NET / PowerShell-Schnittstelle , wenn Sie die Übertragungen automatisieren müssen.

80
Martin Prikryl

Update

S3 bietet jetzt einen vollständig verwalteten SFTP-Gateway-Dienst für S , der in IAM integriert ist und mit aws-cli verwaltet werden kann.


Es gibt theoretische und praktische Gründe, warum dies keine perfekte Lösung ist, aber es funktioniert ...

Sie können einen FTP/SFTP-Dienst (wie proftpd) auf einem Linux-Server installieren, entweder in EC2 oder in Ihrem eigenen Rechenzentrum ... und dann einen Bucket in das Dateisystem einhängen, in dem der FTP-Server für Chroot konfiguriert ist. Verwenden Sie dazu s3fs .

Ich habe einen Client, der Inhalte aus S3 bereitstellt, und die Inhalte werden von einem Drittanbieter bereitgestellt, der nur FTP-Pushs unterstützt ... also mit einigem Zögern (aufgrund der Impedanzinkongruenz zwischen S3 und einem tatsächlichen Dateisystem), aber ohne Als ich vor einigen Monaten die Zeit hatte, ein geeignetes FTP/S3-Gatewayserver-Softwarepaket zu schreiben (das ich noch an einem dieser Tage ausführen werde), schlug ich diese Lösung für sie vor und stellte sie bereit, und sie haben keine Probleme mit dem System gemeldet.

Als Bonus kann proftpd jeden Benutzer in sein eigenes Home-Verzeichnis chrooten und (soweit der Benutzer dies beurteilen kann) so tun, als ob Dateien, die dem proftpd-Benutzer gehören, tatsächlich dem angemeldeten Benutzer gehören ein "Unterverzeichnis" des Buckets und macht die Dateien der anderen Benutzer unzugänglich.


Es gibt jedoch ein Problem mit der Standardkonfiguration.

Sobald Sie anfangen, einige Dutzend oder Hunderte von Dateien abzurufen, tritt das Problem beim Abrufen einer Verzeichnisliste auf, da ProFTPd versucht, die .ftpaccess - Dateien immer wieder und für immer wieder zu lesen Für jede Datei im Verzeichnis .ftpaccess wird geprüft, ob der Benutzer sie anzeigen darf.

Sie können dieses Verhalten in ProFTPd deaktivieren, aber ich würde vorschlagen, dass die richtigste Konfiguration darin besteht, zusätzliche Optionen -o enable_noobj_cache -o stat_cache_expire=30 In s3fs zu konfigurieren:

-o stat_cache_expire (Standard ist kein Ablaufdatum)

Ablaufzeit (Sekunden) für Einträge im Statistik-Cache angeben

Ohne diese Option stellen Sie weniger Anforderungen an S3, erkennen jedoch Änderungen an Objekten nicht immer zuverlässig, wenn externe Prozesse oder andere Instanzen von s3fs auch die Objekte im Bucket ändern. Der Wert "30" in meinem System wurde etwas willkürlich gewählt.

-o enable_noobj_cache (Standard ist deaktiviert)

Cache-Einträge für das Objekt aktivieren, das nicht existiert. s3fs muss immer prüfen, ob eine Datei (oder ein Unterverzeichnis) unter dem Objekt (Pfad) vorhanden ist, wenn s3fs einen Befehl ausführt, da s3fs ein nicht vorhandenes Verzeichnis erkannt hat und Dateien oder Unterverzeichnisse unter sich hat. Dadurch wird die ListBucket-Anforderung erhöht und die Leistung beeinträchtigt. Sie können diese Option für die Leistung festlegen. S3fs merkt sich im Statistik-Cache, dass das Objekt (Datei oder Verzeichnis) nicht existiert.

Mit dieser Option kann sich s3fs daran erinnern, dass .ftpaccess Nicht vorhanden war.


Unabhängig von den Leistungsproblemen, die mit ProFTPd auftreten können und die durch die obigen Änderungen behoben werden, müssen Sie auch -o enable_content_md5 In s3fs aktivieren.

-o enable_content_md5 (Standard ist deaktiviert)

Überprüfung der hochgeladenen Daten ohne Multipart durch Content-MD5-Header. Aktivieren Sie diese Option, um den Header "Content-MD5" zu senden, wenn Sie ein Objekt ohne mehrteilige Veröffentlichung hochladen. Wenn diese Option aktiviert ist, hat dies einen Einfluss auf die Leistung von s3fs beim Hochladen kleiner Objekte. Da s3fs beim Hochladen großer Objekte immer MD5 überprüft, wirkt sich diese Option nicht auf große Objekte aus.

Dies ist eine Option, die niemals eine Option gewesen sein sollte - sie sollte immer aktiviert sein, da sonst eine kritische Integritätsprüfung umgangen wird und nur ein vernachlässigbarer Leistungsvorteil erzielt wird. Wenn ein Objekt mit einem Content-MD5: - Header in S3 hochgeladen wird, überprüft S3 die Prüfsumme und weist das Objekt zurück, wenn es während der Übertragung beschädigt ist. So unwahrscheinlich das auch sein mag, es scheint kurzsichtig, diese Sicherheitsüberprüfung zu deaktivieren.

Zitate stammen aus der Manpage von s3fs. Grammatikfehler sind im Originaltext.

63

Antwort von 2014 für die Leute, die mich runterstimmen:

Nun, S3 ist nicht FTP. Es gibt jedoch sehr viele Clients, die S3 unterstützen.

So ziemlich jeder namhafte FTP-Client unter OS X unterstützt dies, einschließlich Senden und Cyberduck .

Wenn Sie unter Windows arbeiten, schauen Sie sich Cyberduck oder CloudBerry an.

Aktualisierte Antwort für 2019:

AWS hat kürzlich den Dienst AWS Transfer for SFTP veröffentlicht, der möglicherweise genau das tut, wonach Sie suchen.

21
Ryan Parman

Oder drehen Sie die Linux-Instanz für SFTP-Gateway in Ihrer AWS-Infrastruktur, um hochgeladene Dateien in Ihrem Amazon S3-Bucket zu speichern.

Unterstützt von Thorntech

7
mitaka

Filezilla hat gerade ein Pro-Version seines FTP-Clients veröffentlicht. Es verbindet sich mit S3-Buckets in einer optimierten FTP-ähnlichen Umgebung. Ich benutze es selbst (überhaupt keine Zugehörigkeit) und es funktioniert großartig.

3
petezurich

WinSCp unterstützt jetzt das S3-Protokoll

Stellen Sie zunächst sicher, dass für Ihren AWS-Benutzer mit S3-Zugriffsberechtigungen eine "Zugriffsschlüssel-ID" erstellt wurde. Sie müssen auch den „geheimen Zugangsschlüssel“ kennen. Zugriffsschlüssel werden auf der Seite Benutzer der IAM-Verwaltungskonsole erstellt und verwaltet.

Stellen Sie sicher, dass Neuer Standortknoten ausgewählt ist.

Wählen Sie auf dem Knoten Neue Site das Amazon S3-Protokoll aus.

Geben Sie Ihre AWS-Benutzerzugriffsschlüssel-ID und Ihren geheimen Zugriffsschlüssel ein

Speichern Sie Ihre Site-Einstellungen mit der Schaltfläche Speichern.

Melden Sie sich über die Schaltfläche Anmelden an.

3
Subrata Fouzdar

Wie in anderen Postern bereits erwähnt, gibt es beim AWS Transfer for SFTP-Service einige Einschränkungen. Sie müssen die Anforderungen genau aufeinander abstimmen. Beispielsweise gibt es keine Quoten, Whitelists/Blacklists, Dateitypbeschränkungen und ein nicht schlüsselbasierter Zugriff erfordert externe Dienste. Es gibt auch einen gewissen Overhead in Bezug auf Benutzerverwaltung und IAM, der immens sein kann.

Wir betreiben seit ca. 5 Jahren ein SFTP S3 Proxy Gateway für unsere Kunden. Die Kernlösung ist in eine Sammlung von Docker-Diensten eingebettet und wird in jedem erforderlichen Kontext bereitgestellt, selbst auf lokalen oder lokalen Entwicklungsservern. Der Anwendungsfall ist für uns etwas anders, da unsere Lösung auf Datenverarbeitung und Pipelines im Vergleich zu einer Dateifreigabe ausgerichtet ist. In einem Salesforce-Beispiel verwendet ein Kunde SFTP als Transportmethode zum Senden von E-Mail- und Kaufdaten an einen SFTP/S3-Enpoint. Diesem ist in S3 ein Objektschlüssel zugeordnet. Bei der Ankunft werden die Daten abgeholt, verarbeitet, weitergeleitet und in ein Lager geladen. Wir haben auch ziemlich bedeutende Prüfungsanforderungen für jede Übertragung, was die Cloudwatch-Protokolle für AWS nicht direkt bereitstellen.

Wie andere bereits erwähnt haben, ist es auch eine Option, Ihre eigenen zu rollen. Mit AWS Lightsail können Sie mithilfe von Route 53 oder einer ELB einen Cluster von 10 2-GB-Instanzen einrichten, z. B. 4.

Im Allgemeinen ist es großartig zu sehen, dass AWS diesen Service anbietet, und ich erwarte, dass er im Laufe der Zeit ausgereift sein wird. Abhängig von Ihrem Anwendungsfall sind alternative Lösungen möglicherweise besser geeignet.

2
Thomas Spicer

Amazon hat SFTP-Dienste für S3 freigegeben, aber sie bieten nur SFTP (nicht FTP oder FTPES) und können abhängig von Ihren Umständen unerschwingliche Kosten verursachen.

Ich bin der Gründer von DocEvent.io und wir stellen FTP/S-Gateways für Ihren S3-Bucket zur Verfügung, ohne dass Sie Server hochfahren oder sich um die Infrastruktur kümmern müssen.

Es gibt auch andere Unternehmen, die einen eigenständigen FTP-Server anbieten, den Sie monatlich bezahlen und der über die Softwarekonfiguration eine Verbindung zu einem S3-Bucket herstellen kann, z. B. brickftp.com .

Zu guter Letzt gibt es auch einige AWS Marketplace-Apps, die helfen können: hier ist ein Suchlink . Viele dieser Instanzen werden in Ihrer eigenen Infrastruktur hochgefahren. Dies bedeutet, dass Sie die Instanzen selbst verwalten und aktualisieren müssen, was im Laufe der Zeit schwierig zu warten und zu konfigurieren sein kann.

1
Mariusz