LoginSignup
10
9

More than 3 years have passed since last update.

S3互換ストレージのMinIOが使いやすいと聞いたので使ってみた

Last updated at Posted at 2019-05-26

はじめに

今まで 【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を兼ねています。

実際に使ってみる

ログイン後の画面はこんな感じ。
右下の「+」アイコンからバケットを作ったりファイルのアップロードが出来ます。
スクリーンショット 2019-05-26 16.48.55.png

ファイルを実際にアップロードするとこんな感じ。
ブラウザ上でファイルのアップロードができるのがいいですね。
スクリーンショット 2019-05-26 16.54.07.png
ファイルの中身を確認する場合は少し手間ですが、
「…」ボタンからファイルのリンクを取得することで確認することが出来ます。

ちなみに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_KEYMINIO_SECRET_KEY を指定することで
先ほどランダム生成されていた2つのキーを任意のキーに指定することが出来ます。
アクセスキーなどを環境変数で管理しているようなアプリケーションの場合に便利。

tty: true にしておかないと起動した瞬間にコンテナが落ちたので入れてます。

9000番ポートはxdebugなどとポート競合するので必要があれば変更してあげるといいかもです。

おわりに

ひとまずMinIOを使ってみた所感を書いてみました。

ブラウザ上でファイルの中身を見る時だけちょっとめんどくさいですが、
ファイルの一覧参照・ファイルの中身の参照・アップロード・削除などが
ブラウザ上で一通り完結するので開発中のS3代用環境として非常に捗ります。
dockerイメージも提供されているのでコンテナ起動すれば立ち上げ・破棄も簡単なのがとてもありがたい。

MinIOを使用した簡単なアプリケーションも開発したので別記事で書こうと思います。
それでは良い開発ライフを!

10
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
9