So Mounten Sie ein S3-Bucket Lokal auf Linux

0
32

In vielerlei Hinsicht, S3-buckets handeln, wie z.B. cloud-Festplatten, aber Sie sind nur “Objekt-storage”, keine block-level-storage wie EBS oder EFS. Es ist jedoch möglich, montieren Sie einen Eimer als Dateisystem, und der direkte Zugriff durch das Lesen und schreiben von Dateien.

Die Vorteile und Grenzen der S3 wie ein Dateisystem

Die Magie, die macht, diese ganze setup-Arbeit ist ein Programm namens s3fs-fuse. FUSE steht für Filesystem in Userspace, und es entsteht ein bereitgestelltes virtuelles Dateisystem. s3fs-Schnittstellen mit dem S3, und unterstützt eine große Teilmenge der POSIX, einschließlich Lesen, schreiben, Verzeichnisse erstellen und festlegen von Datei-Metadaten.

Einer der großen Vorteile der Verwendung von S3 über traditionelle storage ist, dass es sehr effektiv bei der Speicherung der einzelnen Objekte langfristig ohne Begrenzung auf insgesamt bucket-Größe. Sie können die Speicherung von 10 Fotos oder 10 Millionen Fotos in S3, und es wird funktionieren weitgehend die gleichen. In Anwendungen, wo Sie brauchen eine große (und billige) Festplatte, S3 Sinn macht, und wenn man sich integrieren will, Datei-Zugriff, dies ist ein guter Weg, die Brücke zu den beiden.

Natürlich, es ist nicht ohne Einschränkungen. Während es funktioniert Recht vergleichsweise ein S3-API in Bezug auf die Leistung beim speichern und abrufen von kompletten Dateien, ist es natürlich nicht ersetzen, die viel schneller network-attached-block-storage-vollständig. Es gibt einen Grund, diese Konfiguration nicht offiziell unterstützt durch AWS—du wirst laufen in der concurrency-Probleme mit mehreren clients die Verwendung von Dateien, vor allem, wenn Sie Kunden in verschiedenen Regionen den Zugriff auf die gleichen Eimer. Natürlich, S3 hat auch diese Einschränkung, und es hindert Sie nicht daran, dass mehrere clients angeschlossen, aber es ist mehr sichtbar, wenn die SICHERUNG zu geben scheint du “direkten” Zugang. Es ist nicht, und Sie müssen halten Sie diese Einschränkungen im Hinterkopf.

AWS stellt einen service ähnlich diesem—Speicher-Gateway, das als lokale NAS zu und bietet lokalen block-storage-unterstützt von S3. Dies ist jedoch eher eine enterprise-Lösung, und es erfordert einen kompletten physischen server für die Bereitstellung einer VMWare-image auf. s3fs, auf der anderen Seite, ist eine einfache single-server-Lösung, obwohl es nicht viel Zwischenspeichern.

Also, wenn Sie umwandeln können Anwendungen mithilfe der S3-API eher als eine SICHERUNG, sollten Sie tun, anstatt. Aber, wenn du bist okay, mit ein bisschen hacky Lösung, s3fs nützlich sein kann.

Einrichten s3fs-fuse

Im Vergleich dazu, wie hacky es ist, ist es überraschend einfach einzurichten. s3fs-fuse verfügbar ist von den meisten Paket-Managern, aber es kann nur aufgerufen werden, s3fs auf einigen Systemen. Für Debian-basierte Systeme wie Ubuntu, das wäre:

sudo apt installieren s3fs

Sie müssen zum erstellen einer IAM-Benutzer, und geben Sie ihm die Berechtigung zum Zugriff auf die Eimer, die Sie Einhängen möchten. Am Ende erhalten Sie einen secret access key:

Sie können fügen Sie diese in die standard-AWS-Anmeldeinformationen, die Datei ~/.aws/Anmeldeinformationen, aber wenn Sie wollen verwenden Sie eine andere Taste, s3fs unterstützt die benutzerdefinierte Passwort-Datei. Fügen Sie beide die access key ID und secret in /etc/passwd-s3fs , im folgenden format:

echo ACCESS_KEY_ID:SECRET_ACCESS_KEY > /etc/passwd-s3fs

Und stellen Sie sicher, dass die Berechtigungen auf das keyfile korrekt eingestellt sind, oder es werden Klagen:

chmod 600 /etc/passwd-s3fs

Dann montieren Sie können den Eimer mit dem folgenden Befehl:

s3fs-bucket-name /mnt/bucket-Namen

Wenn das nicht funktioniert, aktivieren Sie die debug-Ausgabe mit ein paar zusätzlichen flags:

-o dbglevel=info -f -o curldbg

Wenn Sie möchten, dass dieses mounten beim Booten, müssen Sie das folgende in deine /etc/fstab:

s3fs#bucket-name /mnt/bucket-Namen fuse _netdev,allow_other,umask=227,uid=33,gid=33,use_cache=/root/cache 0 0