S3 Compatible : MinIO

AWSのストレージサービスS3と互換性があるMinIOをローカルに作ってみました。

環境) Python 3.9.16, Docker Desktop & M2 Mac
参考) https://laid-back-scientist.com/minio

以前業務のデバッグ環境で使用したことはありますが、docker imageとして使えるものがあることを知り、試してみました。

Macでは、上記参考サイトのdocker-composeファイルフォーマットがまずいようなので、修正が必要です。

(root) Additional property minio is not allowed

https://qiita.com/mida12251141/items/2e07cb332e436e56fcc9

しかしここでは使わず以下のような、コマンド一発にしました。(永続化にはVolumeの指定が必要ですが、テストなのですぐ消えてくれた方が良いのと、DockerDesktopのクリック一つで、start/stopができるのでこのままでも問題なし)

参考) https://hub.docker.com/r/minio/minio/

docker run -p 9000:9000 -p 9001:9001 -e MINIO_ROOT_USER=root -e MINIO_ROOT_PASSWORD=password quay.io/minio/minio server /data –console-address “:9001”

管理コンソールから(loginはroot/password)ファイルをドラッグ&ドロップで、アップロードします。

ストレージの内容確認のためファイルリストを取得するPythonプログラムを実行します。

S3を操作するライブラリをインストール

pip install boto3

s3.py

実行結果

% python s3.py
sd00.png
sd01.png

Dockerの中に入って確認します。

mcコマンドは、もともと実行権限がなかったのですが、chmodで付与して実行しました。(このようなことをやっていいのかどうかわかりませんが・・コマンド実行のテストという目的です)

運よく導入が簡単なPythonの事例がありましたが、他の言語でもまた試してみたいと思います。