MinIOを触ってみた

MinIOなるものを見つけて、興味を持ったのでちょっとだけ触ってみた。 といっても今日は起動を試して見るだけ。 MinIOは何回かに分けて取り上げようかなと思う。

MinIOとは?

簡単に言うと、goで実装されたオブジェクトストレージ。 クラウドネイティブな利用を想定して開発されたようだ。 S3と互換性があり、SDKからも利用できるらしい。

min.io

dockerで触ってみる

クイックスタートガイドはこちら。

MinIO | The MinIO Quickstart Guide

色んな方法があるっぽい。 Macならhomebrewでインストールできたり、Linuxなら実行ファイルをwgetで入手してchmod +xするだけだったり。

今回はdockerを使ってみる。

起動

docker runを実行するだけでいいらしい。

 ❯ docker run --name minio_container -p 9000:9000 minio/minio server /data
Unable to find image 'minio/minio:latest' locally
latest: Pulling from minio/minio
a6b97b4963f5: Pull complete
13948a011eec: Pull complete
d48558b57ac3: Pull complete
fdf2c2f8d59c: Pull complete
a5f9b75d1f38: Pull complete
7cff61c3c0cd: Pull complete
bf88f6a73948: Pull complete
Digest: sha256:84a74cd1db07afdc0a399cc9882af4dcc1dbc39636133e818daf76b4e3da469b
Status: Downloaded newer image for minio/minio:latest
Endpoint: http://172.17.0.2:9000  http://127.0.0.1:9000

Browser Access:
   http://172.17.0.2:9000  http://127.0.0.1:9000

Object API (Amazon S3 compatible):
   Go:         https://docs.min.io/docs/golang-client-quickstart-guide
   Java:       https://docs.min.io/docs/java-client-quickstart-guide
   Python:     https://docs.min.io/docs/python-client-quickstart-guide
   JavaScript: https://docs.min.io/docs/javascript-client-quickstart-guide
   .NET:       https://docs.min.io/docs/dotnet-client-quickstart-guide
Detected default credentials 'minioadmin:minioadmin', please change the credentials immediately using 'MINIO_ROOT_USER' and 'MINIO_ROOT_PASSWORD'

これだけで使えるようになる。 ログに出ている通り http://127.0.0.1:9000がブラウザアクセス先、クレデンシャルはデフォルトでminioadmin:minioadminが設定される。

ちなみにdocker runするときに -e "MINIO_ACCESS_KEY=foo" -e "MINIO_SECRET_KEY=bar"と指定すれば、クレデンシャルを指定して起動することができる。 今回は省略。

ブラウザでアクセスしてみる

http://127.0.0.1:9000 にブラウザアクセスするとこんな画面が表示される。 f:id:rsym1290:20210206153911p:plain

デフォルトのクレデンシャルminioadmin:minioadminでログイン。

f:id:rsym1290:20210206154657p:plain

バケットを作成

画面の右下の+よりCreate Bucketf:id:rsym1290:20210206160416p:plainを選択。

f:id:rsym1290:20210206154506p:plain

sample-bucketを作成してみる。

f:id:rsym1290:20210206154542p:plain

バケットが作成された。

f:id:rsym1290:20210206154815p:plain

キーをアップロード

Create BucketのうえにUpload fileがあるのでそこからアップロード。

f:id:rsym1290:20210206160416p:plain

アップロードされた。

f:id:rsym1290:20210217232333p:plain

awsCLIで触ってみる

クレデンシャルをexportして、endpoint-urlにhttp:/127.0.0.1.9000/を指定すればOK。

$ export AWS_ACCESS_KEY_ID=minioadmin
$ export AWS_SECRET_ACCESS_KEY=minioadmin
$ aws --endpoint-url http://127.0.0.1:9000/ s3 ls s3://sample-bucket/
2021-02-17 23:22:52          0 sample-key

Webコンソールでアップロードしたキーを参照できた。

最後に

まだ詳しいことはよくわかってないけど、面白そうなので今後も触ってブログネタにしようかな。 例えば、S3のAPIをプロダクション環境で使っているとして、その開発環境ではS3の代わりにMinIOをさっと立ち上げて検証する。というような使い方ができそう。