Ich habe dieselbe Frage zu Stack Overflow beantwortet .
s3fs ist in der Tat eine vernünftige Lösung, und in meinem Fall habe ich es trotz der theoretischen / potenziellen Probleme mit proftpd mit hervorragenden Ergebnissen gekoppelt.
Zu dem Zeitpunkt, als ich die Antwort schrieb, hatte ich dies nur für einen meiner Beratungskunden eingerichtet ... aber seitdem habe ich auch angefangen, meine eigene Kool-Hilfe zu trinken und verwende sie in der Produktion bei meiner täglichen Arbeit. Unternehmen, bei denen wir den ganzen Tag über Daten mit Upload- und Download-Dateien auf meinem SFTP-Server austauschen, auf dem alles direkt in S3 gespeichert ist. Als Bonus kann mein Berichtsexportsystem, das Excel-Tabellen direkt in S3 schreibt, Berichte "auf den FTP-Server" exportieren, indem sie einfach direkt in den Bucket des FTP-Servers gestellt werden. Die entsprechenden Metadaten zeigen UID, GID und Modus jeder Datei. (s3fs verwendet die Header x-amz-meta-uid, -gid und -mode, um Dateisystemberechtigungen zu emulieren.) Wenn sich der Client beim Server anmeldet, sind die Berichtsdateien nur ... da.
Ich denke, die ideale Lösung wäre wahrscheinlich ein SFTP-zu-S3-Gateway-Dienst, aber ich bin immer noch nicht dazu gekommen, einen zu entwerfen, da diese Lösung wirklich gut funktioniert ... mit einigen Einschränkungen natürlich:
Nicht alle Standardwerte für s3fs sind normal. Sie möchten wahrscheinlich folgende Optionen angeben:
-o enable_noobj_cache # s3fs has a huge performance hit for large directories without this enabled
-o stat_cache_expire=30 # the ideal time will vary according to your usage
-o enable_content_md5 # it's beyond me why this safety check is disabled by default
Es ist wahrscheinlich am besten, eine andere Region als US-Standard zu verwenden, da dies die einzige Region ist, die keine Lese-nach-Schreib-Konsistenz für neue Objekte bietet. (Wenn Sie US-Standard verwenden müssen, können Sie den fast undokumentierten Hostnamen your-bucket.s3-external-1.amazonaws.com
aus der Region us-east-1 verwenden, um zu verhindern, dass Ihre Anforderungen geografisch weitergeleitet werden, was die Konsistenz verbessern kann.)
Ich habe die Objektversionierung für den Bucket aktiviert, von der s3fs nichts weiß. Dies hat den Vorteil, dass ich, selbst wenn eine Datei "getrampelt" werden sollte, jederzeit zur Bucket-Versionierung gehen kann, um die "überschriebene" Datei wiederherzustellen. Die Objektversionierung in S3 wurde brillant so konzipiert, dass S3-Clients, die die Versionierung nicht kennen, in keiner Weise deaktiviert oder verwirrt sind. Wenn Sie keine versionierungsbewussten REST-Aufrufe ausführen, sind die Antworten, die S3 zurückgibt, mit Clients kompatibel kein Konzept der Versionierung.
Beachten Sie auch, dass die Übertragung von Daten in S3 kostenlos ist . Sie zahlen nur den Preis pro Anfrage. Die Übertragung von Daten aus S3 in EC2 innerhalb einer Region ist ebenfalls kostenlos. Nur wenn Sie von S3 ins Internet, in die Cloudfront oder in eine andere AWS-Region übertragen, zahlen Sie Übertragungsgebühren. Wenn Sie den günstigeren Speicher mit reduzierter Redundanz verwenden möchten, unterstützt s3fs dies mit -o use_rrs
.
Abgesehen davon ist es amüsant, dass Sie immer ein warmes, unscharfes Gefühl bekommen, wenn Sie 256 Terabyte freien Speicherplatz sehen (und 0 verwendet werden, da eine echte Größenberechnung unpraktisch ist, da S3 ein Objektspeicher und kein Dateisystem ist ).
$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/xvda1 7.9G 1.4G 6.2G 18% /
s3fs 256T 0 256T 0% /srv/s3fs/example-bucket
Natürlich können Sie den Eimer überall montieren. Ich habe es einfach in / srv / s3fs.