S3互換のオブジェクトストレージminioを試す
はじめに
AWSを利用するシステムを開発するときに、まだリソースを用意してないけどちょっと動かしてみたいな、ということが稀によくありますよね。 最近S3を使う機能の開発でそういう状況になったので、S3互換オブジェクトストレージのminioを試してみました。
簡単に動かすことができたので今回は導入方法とaws-cliからの操作方法を紹介します。
検証環境
- Docker: 18.06.0-ce
- minio: 2018-08-02T23:11:36Z
- aws-cli: 1.16.1
minioとは
minioはプライベートクラウドでの利用を想定した分散オブジェクトストレージです。Go言語実装で、ソースはGitHubのリポジトリで確認できます。
インストール
各環境向けのバイナリとDockerイメージで配布されています。
今回はDockerコンテナで試してみます。 Minio Docs - Minio Quickstart Guide の手順を参考に起動してみましょう。本記事ではバージョンアップによる影響を避けるためリリースタグ 2018-08-02T23:11:36Z
を明示します。また、コンテナ名を minio
にします。
$ docker container run -d --name minio -p 9000:9000 minio/minio:RELEASE.2018-08-25T01-56-38Z server /data
起動できました、簡単ですね! http://localhost:9000
にアクセスしてminioの管理コンソールを開いてみましょう。
アクセスキーとシークレットキーを入力してログインするようになっています。 Minio Docker Quickstart Guide によるとどちらのキーも自動生成されるとのことなので、ログを確認してみましょう。
$ docker container logs minio Endpoint: http://127.0.0.1:9000 AccessKey: <> SecretKey: <> Browser Access: http://http://127.0.0.1:9000 Command-line Access: https://docs.minio.io/docs/minio-client-quickstart-guide $ mc config host add myminio http://127.0.0.1:9000 9C3ZRL4ESZGMZT3ICEHA AdMzEKn9ZHAOD8GGAzzpQTVz5owDR5P9cUq4DGEd Object API (Amazon S3 compatible): Go: https://docs.minio.io/docs/golang-client-quickstart-guide Java: https://docs.minio.io/docs/java-client-quickstart-guide Python: https://docs.minio.io/docs/python-client-quickstart-guide JavaScript: https://docs.minio.io/docs/javascript-client-quickstart-guide .NET: https://docs.minio.io/docs/dotnet-client-quickstart-guide
MINIO_ACCESS_KEY
と MINIO_SECRET_KEY
にキーが表示されます。今回は試しませんが、下記の環境変数を指定してコンテナを起動すると、好きなアクセスキー・シークレットキーを指定することができます。
変数名 | 内容 |
---|---|
MINIO_ACCESS_KEY | アクセスキー |
MINIO_SECRET_KEY | シークレットキー |
試してみる
コンソールから操作する
画面右下のボタンを押してバケットを作成します。
ボタンが3つ表示されるので、中央のボタンを押します。
バケット名を入力したらEnterキーを押して作成します。
左側のペインから作成したバケットを選択します。
画面右下のボタンを押してファイルをアップロードします。今回は試しにテキストファイルを作ってアップロードしてみます。
$ echo 'Hello, minio!' > hello-minio.txt
今度は一番上のボタンを押します。
作成したファイルを選びます。
画面上部に成功のメッセージが表示されればアップロード完了です。
aws-cliから操作する
aws-cliからminioを操作してみます。まず環境変数でアクセスキーとシークレットキーを設定します。
# 一時的にminioのアクセスキー/シークレットキーを使用する $ export AWS_ACCESS_KEY_ID=<> $ export AWS_SECRET_ACCESS_KEY=<>
そのままだとAmazon S3にアクセスしてしまうので、 --endpoint-url
オプションを指定してminioにアクセスするようにします。
# aws-cliでminioを操作する $ aws --endpoint-url http://127.0.0.1:9000 s3 ls 2018-08-30 17:59:45 minio-bucket $ aws --endpoint-url http://127.0.0.1:9000 s3 ls s3://minio-bucket/ 2018-08-30 17:59:45 14 hello-minio.txt $ aws --endpoint-url http://127.0.0.1:9000 s3 cp s3://minio-bucket/hello-minio.txt . download: s3://minio-bucket/hello-minio.txt to ./hello-minio-dl.txt $ cat hello-minio-dl.txt Hello, minio!
問題なく動きましたね!
おわりに
今回はminioを導入して、aws-cliで操作できることを確認しました。Dockerで簡単に構築できるのがとても魅力的ですね。 今回は試しませんでしたが、データの保存先をマウントできるのでフィクスチャを用意してテストするといった活用もできそうです。 便利そうなのでローカル環境でのテストを中心に使っていきたいと思います!