はじめに
今まで 【fake-S3】 という S3 互換ストレージを使用していたのだが、
「特定ディレクトリに入っているファイルの一覧」を確認ができず困っていたところ、
同じく S3 互換ストレージの 【MinIO】 がそれを解決してくれそうだったので早速導入してみた。
MinIOとは
https://www.minio.io/
AWS の S3 互換の API を持ったS3互換ストレージです。
S3 互換ストレージ共通のメリットですが、
AWS の S3 を使わずともローカルマシン上に仮想的な S3 環境を構築できるのが便利。
ローカルの仮想環境なので不用意にAPIを叩いてもお金も掛からず、安心して開発が出来ますね。
MinIO は docker イメージも提供されているため、
docker インストール済みのパソコンであればすぐに使用・破棄できるのも嬉しい。
今回はdockerから導入してみようと思います。
起動してみる
dockerを使用する場合は基本的に公式サイト記載のdockerコマンドを叩くだけ。
ただしそのまま起動するとコンテナの中に入らないとAccessKeyが表示されないので
今回は -it
オプションを記載して起動。
docker run -p 9000:9000 -it minio/minio server /data
そうすると下記のような画面が表示されて、AccessKeyとSecretKeyが表示されるので控えておく。
Endpoint: http://172.17.0.2:9000 http://127.0.0.1:9000
AccessKey: 9P09VI5QDD82V7Y29ABR
SecretKey: 8yz7vYLZY8RradhOCTZt0GTi6HezRn4IIE7yfAg8
Browser Access:
http://172.17.0.2:9000 http://127.0.0.1:9000
Command-line Access: https://docs.min.io/docs/minio-client-quickstart-guide
$ mc config host add myminio http://172.17.0.2:9000 9P09VI5QDD82V7Y29ABR 8yz7vYLZY8RradhOCTZt0GTi6HezRn4IIE7yfAg8
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
EndpointをブラウザのURLに入れてアクセスするとログイン画面に遷移するので
先ほど控えたAccessKeyとSecretKeyを入力するとログイン完了。
ちなみにこのアドレスはプログラムからファイルをアップロードする場合のEndpointを兼ねています。
実際に使ってみる
ログイン後の画面はこんな感じ。
右下の「+」アイコンからバケットを作ったりファイルのアップロードが出来ます。
ファイルを実際にアップロードするとこんな感じ。
ブラウザ上でファイルのアップロードができるのがいいですね。
ファイルの中身を確認する場合は少し手間ですが、
「…」ボタンからファイルのリンクを取得することで確認することが出来ます。
ちなみにfakeS3 ではバケットのパスをそのまま入力すると
ファイルを参照することが出来たのでこの部分だけはちょっと使いにくいですが、
まあ許容範囲内かな。
docker-compose から起動する場合
下記のようにすればOK
version: '2'
services:
s3:
image: minio/minio
ports:
- "9000:9000"
volumes:
- "./tmps3:/export"
environment:
MINIO_ACCESS_KEY: xxxxxxxx # 任意で8文字以上
MINIO_SECRET_KEY: xxxxxxxx # 任意で8文字以上
tty: true
command: [server, /data]
restart: always
enviroment
の項目で MINIO_ACCESS_KEY
と MINIO_SECRET_KEY
を指定することで
先ほどランダム生成されていた2つのキーを任意のキーに指定することが出来ます。
アクセスキーなどを環境変数で管理しているようなアプリケーションの場合に便利。
tty: true
にしておかないと起動した瞬間にコンテナが落ちたので入れてます。
9000番ポートはxdebugなどとポート競合するので必要があれば変更してあげるといいかもです。
おわりに
ひとまずMinIOを使ってみた所感を書いてみました。
ブラウザ上でファイルの中身を見る時だけちょっとめんどくさいですが、
ファイルの一覧参照・ファイルの中身の参照・アップロード・削除などが
ブラウザ上で一通り完結するので開発中のS3代用環境として非常に捗ります。
dockerイメージも提供されているのでコンテナ起動すれば立ち上げ・破棄も簡単なのがとてもありがたい。
MinIOを使用した簡単なアプリケーションも開発したので別記事で書こうと思います。
それでは良い開発ライフを!