Mit Mountpoint for S3 ist seit dem 9. August 2023 ein neuer File-Client für den Zugriff auf Objekte im Amazon S3 verfügbar. Mit ihm können Entwickler ein S3 unter Unix als Filesystem einhängen. Für die Weiterverarbeitung von S3-Objekten steht damit die Welt der Unix-Tools offen – ohne für das S3-Retrieval zusätzlich Code schreiben zu müssen.
Da auch schon Packages für beliebte Distributionen bereitstehen, ist die Installation recht einfach. Hier für Ubuntu:
wget https://s3.amazonaws.com/mountpoint-s3-release/latest/x86_64/mount-s3.deb sudo apt-get install -y ./mount-s3.deb
Anschließend können Anwender ein S3 im System einhängen:
mkdir /tmp/mnt aws-vault exec mayflower_workshop -- mount-s3 mayflower_workshop /tmp/mnt/ --allow-delete
Ich verwalte meine AWS-Credentials mit aws-vault
. Man kann seine Credentials auch direkt in $HOME/.aws
ablegen, wie für die AWS CLI üblich, das ist aber bei weiten nicht so komfortabel und sicher.
Jetzt stehen auch die Unix-Tools zur Verfügung. Möchte ich zum Beispiel alle Markdown-Dateien nach HTML mit pandoc
konvertieren, schreibe ich:
cd /tmp/mnt for md_file in *.md; do echo pandoc -o "$(basename "$md_file" .md).html" "$md_file"; done
Und natürlich kann ich das Filesystem wieder aushängen, wenn ich es nicht mehr benötigte:
umount /tmp/mnt
Wegen seiner Besonderheiten ist das Filesystem allerdings nicht mit allen UNIX-Tools kompatibel. Das Kopieren mit Rsync endet mit einem Fehler, da die temporären Dateien nicht umbenannt werden können!
Man sollte das Filesystem auch nicht für Logging verwenden, da die Dateien nur 1x beschrieben werden können.
Hier ein kleiner Spickzettel, welche UNIX-System Call unterstützt werden.
Aktion | System Call | Unix Command | Unterstützung? | Kommentar |
---|---|---|---|---|
Verzeichnis erstellen | mkdir | mkdir dir | Nur lokal: Leere Verzeichnisse existieren nur lokal und sind nach dem Aushängen aus dem Filesystem nicht mehr existent! | |
Verzeichnis löschen | rmdir | rmdir dir | Nur lokal: Wenn alle Objekte aus dem Verzeichnis gelöscht sind, wird das Verzeichnis automatisch gelöscht! | |
Verzeichnisinhalt lesen | opendir, readdir, closedir | ls dir | ||
Dateien erstellen | creat | touch file | ||
Dateien schreiben | write, fsync | echo content > file | Nur einmalig möglich | |
Dateien lesen | open, read, lseek, close | cat file | ||
Dateien löschen | unlink | rm file | Die Option --allow-delete muss beim Einhängen verwendet werden | |
Dateien umbenennen | rename | mv file newfile | Ein Workaround besteht aus kopieren und löschen | |
Links | link | ln -s file symlink | Weder harte noch symbolische Links werden unterstützt. symlinks von einem anderen Dateisystem aus zu einem S3 Objekt gehen aber sehr wohl! |
Noch ein kurzer Blick auf die Kosten … Mountpoint for S3 selbst ist frei erhältlich, beim Zugriff auf AWS S3 können aber sehr wohl Kosten entstehen. Zum Beispiel kann die Verwendung der Shell-Completion unbeabsichtigt Kosten verursachen, da im Hintergrund ein S3 LIST
ausgeführt wird.
weiterführende Links zum Thema
- https://aws.amazon.com/de/blogs/aws/mountpoint-for-amazon-s3-generally-available-and-ready-for-production-workloads/
- https://github.com/awslabs/mountpoint-s3
- https://aws.amazon.com/de/blogs/storage/the-inside-story-on-mountpoint-for-amazon-s3-a-high-performance-open-source-file-client/
Schreibe einen Kommentar