Daten kübelweise mit S3 ablegen
Einführung in MinIO und den MinIO-Client
MinIO ist eine freie Implementierung des Amazon Simple Storage Services (kurz: S3), womit sich Dateien als Objekte “kübelweise”, d.h. in sogenannten Buckets, ablegen lassen. Weitere Hierarchiestufen gibt es nicht; auch die Berechtigungen lassen sich nur auf Stufe Bucket festlegen.
In diesem Artikel soll gezeigt werden, wie sich MinIO in Betrieb nehmen und mit
dem MinIO-Client mc
ansprechen lässt. Hierzu soll wie bereits im
spiped
-Artikel das Herr der Ringe-Universum zur
Veranschaulichung dienen ‒ und Debian 12 “Bookworm” als Betriebssystem. So hat
sich Gondor bereiterklärt, das Hosting zu übernehmen. Und
so wird MinIO installiert und konfiguriert:
faramir@gondor:~$ wget https://dl.min.io/server/minio/release/linux-amd64/minio
faramir@gondor:~$ chmod +x minio
faramir@gondor:~$ cat >> ~/.bashrc
export MINIO_ROOT_USER=aragorn
export MINIO_ROOT_PASSWORD=arwen
[Ctrl]-[D]
faramir@gondor:~$ . ~/.bashrc
faramir@gondor:~$ mkdir ~/minio-data
Benutzername und Passwort werden als Umgebungsvariablen gespeichert. Es wird auch ein Datenverzeichnis für MinIO angelegt. Nun kann der Server bereits gestartet werden:
faramir@gondor:~$ ./minio server minio-data/
Unter http://localhost:9000
liesse sich nun ein Web-Interface aufrufen, worauf
doch an dieser Stelle verzichtet wird. Stattdessen soll mc
, der MinIO-Client
für die Kommandozeile, zum Einsatz kommen. Auch dieser muss heruntergeladen und
ausführbar gemacht werden:
faramir@gondor:~$ wget https://dl.min.io/client/mc/release/linux-amd64/mc
faramir@gondor:~$ chmod +x mc
Nun soll für mc
ein Alias für die lokale MinIO-Instanz eingerichtet werden,
welches die Zugriffe erleichtern wird:
faramir@gondor:~$ ./mc alias set local http://localhost:9000 aragorn arwen
Added `local` successfully.
Unter diesem Alias erfolgt nun der Zugriff auf MinIO ohne weitere
Authentifizierung. Als erstes soll nun ein Bucket erstellt werden, der
zeitgeistgemäss mit „innovationen“ betitelt wird, wozu der Befehl mc mb
(MinIO
Client, make bucket) zum Einsatz kommt:
faramir@gondor:~$ ./mc mb local/innovationen
Bucket created successfully `local/innovationen`.
Bei der Belagerung Gondors war u.a. eine Vorrichtung im Einsatz, die der lokale Chronist unter dem Titel „Frittierwagen“ als Stich abgelegt hat. Dieses Artefakt soll in dem entsprechenden Kübel abgelegt werden:
faramir@gondor:~$ ./mc cp frittierwagen.png local/innovationen/
faramir@gondor:~$ ./mc ls local/innovationen/
[2022-12-21 21:14:13 CET] 1.9MiB STANDARD frittierwagen.png
Das hat funktioniert. Doch kann man auch vonseiten Rohans auf diese technische
Errungenschaft zugreifen? Dazu müsste dort auch mc
eingerichtet werden. Oder
einfach eine Alternative wie s3cmd
, womit man auch auf die Amazon-Variante von
S3 zugreifen kann, falls man dereinst doch noch mit Mordor Geschäfte machen
möchte:
eomer@rohan:~$ sudo apt install -y s3cmd
eomer@rohan:~$ cat > ~/.s3cfg
host_base = gondor:9000
host_bucket = gondor:9000
use_https = False
access_key = aragorn
secret_key = arwen
[Ctrl]-[D]
eomer@rohan:~$ s3cmd ls s3://innovationen
2022-12-21 20:14 1965381 s3://innovationen/frittierwagen.png
Der access_key
entspricht dem MinIO-Benutzernamen; der secret_key
dem
MinIO-Passwort. (Bei MinIO ist man von den S3-typischen Bezeichnungen
weggekommen.)
Der Zugriff auf den Bucket im entfernten Gondor funktioniert. So schickt man schnell ein paar Feriengrüsse dorthin:
eomer@rohan:~$ s3cmd put ansichtskarte.png s3://innovationen
In Gondor freut man sich darüber und sichert die Datei gleich lokal zur Betrachtung:
faramir@gondor:~$ ./mc ls local/innovationen
[2022-12-21 21:41:27 CET] 1.9MiB STANDARD ansichtskarte.png
[2022-12-21 21:14:13 CET] 1.9MiB STANDARD frittierwagen.png
faramir@gondor:~$ ./mc cp local/innovationen/ansichtskarte.png .
Noch schöner wäre es allerdings, wenn man nicht die mc
-Befehle für den Zugriff
verwenden müsste, sondern die Standard-Unix-Werkzeuge dafür verwenden könnte.
Auch das geht wunderbar mit einem FUSE für S3, das unter dem Debian-Paket s3fs
zur Verfügung steht:
faramir@gondor:~$ sudo apt install -y s3fs
faramir@gondor:~$ cat > ~/.passwd-s3fs
aragorn:arwen
[Ctrl]-[D]
faramir@gondor:~$ chmod 600 ~/.passwd-s3fs
faramir@gondor:~$ mkdir ~/innovationen
faramir@gondor:~$ s3fs innovationen ~/innovationen -o use_path_request_style,url=http://localhost:9000
faramir@gondor:~$ ls ~/innovationen/
ansichtskarte.png frittierwagen.png
faramir@gondor:~$ du -h ~/innovationen/*
1.9M /home/faramir/innovationen/ansichtskarte.png
1.9M /home/faramir/innovationen/frittierwagen.png
Im Gegensatz zu s3cmd
legt s3fs
Wert darauf, dass die Konfigurationsdatei eingeschränkte Zugriffsrechte hat. Es wird ein einzelner Bucket in ein lokales Verzeichnis gemounted. Der Mount kann mittels umount
wieder entfernt werden:
faramir@gondor:~$ umount ~/innovationen
Das wäre eine kurze Tour durch den Simple Storage Service mit der freien
Implementierung MinIO und den Hilfsprogrammen s3cmd
und s3fs
gewesen. Die
grafische Benutzeroberfläche von MinIO ist auch sehr komfortabel. Auf
Zusatzfunktionen wie Berechtigungen, Tags, Spiegelung usw. soll an dieser
Stelle nicht eingegangen werden.