Amazon S3 互換のMinioをちょっとだけ試す

Amazon S3 互換のMinioを少し試してみました.MinioはGo製でマルチプラットホーム(Linux/Windows/macOS/FreeBSD等)で動作します.

Minioダウンロード

いろいろな環境で動作します.Linux amd64だけでもDocker, Snap, 単一バイナリなどが選べます.
今回はお手軽にバイナリで試します.

minio.sha256sumのファイル名はminio.RELEASE.2018-02-09T22-40-05を見ているようなので目diffで…….(minio.ascminioを見てますね.)

$ wget https://dl.minio.io/server/minio/release/linux-amd64/minio
$ wget https://dl.minio.io/server/minio/release/linux-amd64/minio.sha256sum
$ cat minio.sha256sum
98cf1e082368e3f57f2be39dd49b1abffca4068e6d3e859f300ae93b4e5f6a5a minio.RELEASE.2018-02-09T22-40-05Z
$ sha256sum -c minio.sha256sum 
sha256sum: minio.RELEASE.2018-02-09T22-40-05Z: そのようなファイルやディレクトリはありません
minio.RELEASE.2018-02-09T22-40-05Z: FAILED open or read
sha256sum: 警告: 一覧にある 1 個のファイルが読み込めませんでした
$ sha256sum minio
98cf1e082368e3f57f2be39dd49b1abffca4068e6d3e859f300ae93b4e5f6a5a  minio
$ wget https://dl.minio.io/server/minio/release/linux-amd64/minio.asc
$ gpg --verify minio.asc
gpg: 署名されたデータが'minio'にあると想定します
gpg: 2018年02月10日 07時40分19秒 JSTに施された署名
gpg:                RSA鍵12C74390F9AAC728を使用
gpg: "Minio Trusted <trusted@minio.io>"からの正しい署名 [不明の]
gpg: *警告*: この鍵は信用できる署名で証明されていません!
gpg:       この署名が所有者のものかどうかの検証手段がありません。
 主鍵フィンガープリント: 4405 F3F0 DDBA 1B9E 68A3  1D25 12C7 4390 F9AA C728

実行権を付与します.

$ chmod +x minio

ダウンロードページや READMEにはamd64のしか載っていませんが,以下のあたりを見ると386, ARM, ARM64などもあります :)

minio USAGE

$ ./minio -h
NAME:
  minio - Cloud Storage Server.

DESCRIPTION:
  Minio is an Amazon S3 compatible object storage server. Use it to store photos, videos, VMs, containers, log files, or any blob of data as objects.

USAGE:
  minio [FLAGS] COMMAND [ARGS...]

COMMANDS:
  server   Start object storage server.
  gateway  Start object storage gateway.
  update   Check for a new software update.
  version  Print version.

FLAGS:
  --config-dir value, -C value  Path to configuration directory. (default: "/home/mk/.minio")
  --quiet                       Disable startup information.
  --json                        Output server logs and startup information in json format.
  --help, -h                    Show help.

VERSION:
  2018-02-09T22:40:05Z

Minioをサーバとして実行

ストレージに/media/mk/diskを指定して実行しています.

$ ./minio server /media/mk/disk
Created minio configuration file successfully at /home/mk/.minio

Drive Capacity: 4.5 GiB Free, 466 GiB Total

Endpoint:  http://192.168.2.200:9000  http://172.17.0.1:9000  http://127.0.0.1:9000
AccessKey: AUI0SRSWF5NOG1JLQNX6 
SecretKey: LJ3JI3+VR8aYQR/vCA9QjVkVF4xddkU76Bb1ZW84 

Browser Access:
   http://192.168.2.200:9000  http://172.17.0.1:9000  http://127.0.0.1:9000

Command-line Access: https://docs.minio.io/docs/minio-client-quickstart-guide
   $ mc config host add myminio http://192.168.2.200:9000 AUI0SRSWF5NOG1JLQNX6 LJ3JI3+VR8aYQR/vCA9QjVkVF4xddkU76Bb1ZW84

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

この状態で http://localhost:9000/ にアクセスすると以下のような画面にアクセスできてファイルの閲覧やダウンロードが出来ます.
※同じネットワークからも見えちゃうので注意.

4ed69fd748a6d8ed2a68bb70536f0bb4d76972822dea5a2f9c55aaed99d70541

Minio Client(mc)

Minio Client(mc)というコマンドラインクライアントもあるそうなので試してみます.
#mcというとファイラーと名前が当ってしまいますね. -> Midnight Commander

例によってこの辺を見ると各種環境のものがあります.

$ wget https://dl.minio.io/client/mc/release/linux-amd64/mc
$ wget https://dl.minio.io/client/mc/release/linux-amd64/mc.sha256sum
$ wget https://dl.minio.io/client/mc/release/linux-amd64/mc.asc
$ sha256sum -c mc.sha256sum
sha256sum: mc.RELEASE.2018-02-09T23-07-36Z: そのようなファイルやディレクトリはありません
mc.RELEASE.2018-02-09T23-07-36Z: FAILED open or read
sha256sum: 警告: 一覧にある 1 個のファイルが読み込めませんでした
$ cat mc.sha256sum
7367d2e7e14aea6ef1928c75d5965e7124f8027254007ccf7c51cbd83ed73386 mc.RELEASE.2018-02-09T23-07-36Z
$ sha256sum ./mc
7367d2e7e14aea6ef1928c75d5965e7124f8027254007ccf7c51cbd83ed73386  ./mc
$ gpg --verify ./mc.asc 
gpg: 署名されたデータが'./mc'にあると想定します
gpg: 2018年02月10日 08時07分39秒 JSTに施された署名
gpg:                RSA鍵12C74390F9AAC728を使用
gpg: "Minio Trusted <trusted@minio.io>"からの正しい署名 [不明の]
gpg: *警告*: この鍵は信用できる署名で証明されていません!
gpg:       この署名が所有者のものかどうかの検証手段がありません。
 主鍵フィンガープリント: 4405 F3F0 DDBA 1B9E 68A3  1D25 12C7 4390 F9AA C728
$ chmod +x ./mc

mc USAGE

$ ./mc --help
NAME:
  mc - Minio Client for cloud storage and filesystems.

USAGE:
  mc [FLAGS] COMMAND [COMMAND FLAGS | -h] [ARGUMENTS...]

COMMANDS:
  ls       List files and folders.
  mb       Make a bucket or a folder.
  cat      Display file and object contents.
  pipe     Redirect STDIN to an object or file or STDOUT.
  share    Generate URL for sharing.
  cp       Copy files and objects.
  mirror   Mirror buckets and folders.
  find     Search for files and objects.
  stat     Stat contents of objects and folders.
  diff     List differences in object name, size, and date between folders.
  rm       Remove files and objects.
  events   Manage object notifications.
  watch    Watch for file and object events.
  policy   Manage anonymous access to objects.
  admin    Manage Minio servers
  session  Manage saved sessions for cp command.
  config   Manage mc configuration file.
  update   Check for a new software update.
  version  Print version info.

GLOBAL FLAGS:
  --config-folder value, -C value  Path to configuration folder. (default: "/home/mk/.mc")
  --quiet, -q                      Disable progress bar display.
  --no-color                       Disable color theme.
  --json                           Enable JSON formatted output.
  --debug                          Enable debug output.
  --insecure                       Disable SSL certificate verification.
  --help, -h                       Show help.

VERSION:
  2018-02-09T23:07:36Z

minioのurl, アクセスキー, シークレットキーを設定します.

$ ./mc config host add myminio http://192.168.2.200:9000 AUI0SRSWF5NOG1JLQNX6 LJ3JI3+VR8aYQR/vCA9QjVkVF4xddkU76Bb1Z
W84
Added `myminio` successfully.

lsしてみます.サブディレクトリは./mc ls s3 myminio/SUBDIRな感じで.

$ ./mc ls s3 myminio                                                                                               mc: <ERROR> Unable to list folder. The AWS Access Key Id you provided does not exist in our records.
[2015-10-14 19:34:12 JST]     0B ac100-simple-repart/
[2014-03-01 02:29:12 JST]     0B backup/
[2014-04-09 10:49:46 JST]     0B cubox-i/
[2016-03-10 13:04:52 JST]     0B flash-tmp/
[2015-10-14 19:34:48 JST]     0B image/
[2014-05-05 05:53:24 JST]     0B kobo/
[2015-10-14 19:34:26 JST]     0B nakasi-lmy47v/
[2014-02-28 00:14:16 JST]     0B opencocon.org/
[2017-12-09 02:28:42 JST]     0B pinebook/
[2017-03-01 19:49:58 JST]     0B raspifw/

多分しばらく前にサポートされたWinSCPやFileZilla Proでもアクセスできるのではないかと思います.