📥

aws S3 互換ストレージ MinIO 入門 〜 mc.exe を試しに動かしてみる

15 min read

objects

S3 の aws コマンドの代わりとなる mc コマンドを試す

MinIO は aws クラウドのストレージ S3 と互換性があるサービスですが aws のクラウドを使う必要はなく、自分のサーバーにインストールして簡易的な オブジェクト ストレージ(ファイル サーバー)を構築できます。

ここでは、S3 の aws コマンドの代わりとなる MinIO のクライアント mc を学習するための環境を Windows で簡単に作る方法を紹介します。たとえば、バケットを作成する aws mb コマンドに相当する mc mb コマンド を簡単に試すことができるようになります。ほかにも、mc ls コマンドで一覧することや mc cp コマンドでアップロード・ダウンロードをすることを試すことができます。こうして試すことで オブジェクト ストレージ が何なのかのイメージが付き、Docker やサーバーに配置された MinIO の詳細の学習もスムーズになります。

MinIO のサービスは、3台のサーバーに分散配置すると堅牢で高性能になりますが、ここでは簡単に導入するため Windows のローカル 1台に配置します。クライアントも同じ Windows のローカルで動かします。

なお、この記事は MinIO の公式 https://docs.min.io/docs/minio-client-quickstart-guide.html を参考にしています。

手順の構造化文章

あいまいな文章はいいから厳密な手順が知りたいという方のためにまずは typrm に対応した構造化文章(YAML)で示します。一般的な文章は後の章で示します。

設定:
    __FileName__: _a.txt
    __MinIO_Alias__: minioalias
    __BucketName__: bucket1
    __MinIO_ConsolePort__: 60277
    __MinIO_EndPoint__: http://localhost:9000
    __MinIO_AccessKey__: minioadmin
    __MinIO_SecretKey__: minioadmin
    __MinIO_Folder__: ${env:USERPROFILE}\AppData\Roaming\MinIO  #// USERPROFILE = C:\Users\____\

MinIO サーバーをインストールします:
    minio.exe をダウンロードします:
        #ref: https://dl.min.io/server/minio/release/windows-amd64/minio.exe
    ヘルプを表示します:
        (PowerShell): |
            & ${env:USERPROFILE}\Downloads\minio
MinIO サーバーを起動します:
    (新しい PowerShell): |
        - mkdir ${env:USERPROFILE}\AppData\Roaming\MinIO
            #template: __MinIO_Folder__
        - & ${env:USERPROFILE}\Downloads\minio server ${env:USERPROFILE}\AppData\Roaming\MinIO --console-address ":60277"
            #template: __MinIO_Folder__ --console-address ":__MinIO_ConsolePort__"
    ブラウザーで MinIO のコンソールを表示します:  #keyword: MinIO console
        URL: http://localhost:60277  #template: __MinIO_ConsolePort__
        Username: minioadmin         #template: __MinIO_AccessKey__
        Password: minioadmin         #template: __MinIO_SecretKey__
    ログを表示します:
        MinIO console >> Tools >> Logs
MinIO クライアント mc.exe をインストールします:  #keyword: install mc MinIO
    mc.exe をダウンロードします:
        #ref: https://dl.min.io/client/mc/release/windows-amd64/mc.exe
    ヘルプを表示します:
        (PowerShell): |
            & ${env:USERPROFILE}\Downloads\mc
    公式: #ref: https://docs.min.io/minio/baremetal/reference/minio-cli/minio-mc.html
エイリアスを新規作成します:
    (PowerShell): |
        & ${env:USERPROFILE}\Downloads\mc alias set  minioalias  http://localhost:9000  minioadmin  minioadmin
            #template: mc alias set  __MinIO_Alias__  __MinIO_EndPoint__  __MinIO_AccessKey__  __MinIO_SecretKey__
    (書式):
        - mc alias set __Alias__  __EndPoint__
        - mc alias set __MinIO_Alias__  __EndPoint__  __AccessKey__  __SecretKey__  --api __API_Signature__
    __API_Signature__:
        --api オプションを省略した場合: S3v4
    (パスワードなどを環境変数に設定する場合):
        export MC_HOST___Alias__=https://__AccessKey__:__SecretKey__@__EndPoint__
        #ref: https://docs.min.io/docs/minio-client-complete-guide.html >> Specify temporary host configuration through environment variable
接続先の情報を表示します:
    (PowerShell): |
        & ${env:USERPROFILE}\Downloads\mc  admin info minioalias
            #template: mc  admin info __MinIO_Alias__
バケットを一覧します:  #keyword: mc ls example
    (PowerShell): |
        & ${env:USERPROFILE}\Downloads\mc  ls minioalias
            #template: mc  ls __MinIO_Alias__
    (参考)インターネットにあるお試しサイト https://play.min.io/ にアクセスする場合: |
        & ${env:USERPROFILE}\Downloads\mc  ls play
バケットを新規作成します:  #keyword: mc mb example
    (PowerShell): |
        & ${env:USERPROFILE}\Downloads\mc  mb minioalias/bucket1
        & ${env:USERPROFILE}\Downloads\mc  ls minioalias
            #template-at(-2): mc  mb __MinIO_Alias__/__BucketName__
            #template-at(-2): mc  ls __MinIO_Alias__
ファイルをアップロードします:  #keyword: mc cp example
    (PowerShell): |
        echo a > _a.txt
            #template: __FileName__
        & ${env:USERPROFILE}\Downloads\mc  cp _a.txt  minioalias/bucket1
        & ${env:USERPROFILE}\Downloads\mc  ls minioalias/bucket1
            #template-at(-2): mc  cp __FileName__  __MinIO_Alias__/__BucketName__
            #template-at(-2): mc  ls __MinIO_Alias__/__BucketName__
        rm _a.txt
            #template: __FileName__
終了します:
    minio.exe が実行されているシェル >> Ctrl + C
アンインストールします:
    minio.exe や mc.exe を削除します:
        (PowerShell): |
            rm  ${env:USERPROFILE}\Downloads\minio.exe
            rm  ${env:USERPROFILE}\Downloads\mc.exe
    minio.exe が使っていたフォルダーを削除します:
        (PowerShell): |
            rm -r -fo ${env:USERPROFILE}\mc
            rm -r -fo ${env:USERPROFILE}\AppData\Roaming\MinIO

手順

MinIO サーバーをインストールします

https://dl.min.io/server/minio/release/windows-amd64/minio.exe をブラウザーのアドレスバーに入力して Enter を押し、minio.exe をダウンロードします。 なお、このアドレスは、MinIO の公式 https://docs.min.io/docs/minio-client-quickstart-guide.html の Windows 用の説明に書かれているアドレスです。安全のため、ダウンロードするときは、URL のドメインが .min.io であることを確認してください。

Windows のスタートを開き、PowerShell と入力して PowerShell を開き、下記のように入力します。

& ${env:USERPROFILE}\Downloads\minio

下記のようにヘルプが表示されればダウンロードは成功です。

PS C:\Users\____> & ${env:USERPROFILE}\Downloads\minio
NAME:
  minio.exe - High Performance Object Storage

DESCRIPTION:
  Build high performance data infrastructure for machine learning, analytics and application data workloads with MinIO

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

COMMANDS:
  server   start object storage server
  gateway  start object storage gateway

FLAGS:
  --certs-dir value, -S value  path to certs directory (default: "C:\\Users\\ts-ne\\.minio\\certs")
  --quiet                      disable startup information
  --anonymous                  hide sensitive information from logging
  --json                       output server logs and startup information in json format
  --help, -h                   show help
  --version, -v                print the version

VERSION:
  RELEASE.2022-01-08T03-11-54Z

MinIO サーバーを起動します

新しい PowerShell を開き、下記のように入力します。Windows Defender によるセキュリティの確認が表示されたら、許可してください。

mkdir ${env:USERPROFILE}\AppData\Roaming\MinIO
& ${env:USERPROFILE}\Downloads\minio server ${env:USERPROFILE}\AppData\Roaming\MinIO --console-address ":60277"

下記のように表示されればサーバーの起動は成功です。

PS C:\Users\____> & ${env:USERPROFILE}\Downloads\minio server ${env:USERPROFILE}\AppData\Roaming\MinIO --console-address ":60277"
API: http://192.168.2.110:9000  http://127.0.0.1:9000
RootUser: minioadmin
RootPass: minioadmin

Console: http://192.168.2.110:60277 http://127.0.0.1:60277
RootUser: minioadmin
RootPass: minioadmin

Command-line: https://docs.min.io/docs/minio-client-quickstart-guide
   $ mc.exe alias set myminio http://192.168.2.110:9000 minioadmin minioadmin

Documentation: https://docs.min.io
WARNING: Detected default credentials 'minioadmin:minioadmin', we recommend that you change these values with 'MINIO_ROOT_USER' and     'MINIO_ROOT_PASSWORD' environment variables

ブラウザーで MinIO のコンソールを表示します

ブラウザーで http://localhost:60277 を開きます。

login

Username にはサーバー起動時に表示される RootUser、つまり minioadmin を入力します。

Password にはサーバー起動時に表示される RootPass、つまり minioadmin を入力します。

ログインしたらダッシュボードが表示されます。

dashboard

Tools メニューの Logs を選ぶと、ログが表示されます。

logs

MinIO クライアント mc.exe をインストールします

https://dl.min.io/client/mc/release/windows-amd64/mc.exe をブラウザーのアドレスバーに入力して Enter を押し、minio.exe をダウンロードします。なお、このアドレスは、MinIO の公式 https://docs.min.io/docs/minio-client-quickstart-guide.html の Windows 用の説明に書かれているアドレスです。安全のため、ダウンロードするときは、URL のドメインが .min.io であることを確認してください。

PowerShell で下記のように入力します。

& ${env:USERPROFILE}\Downloads\mc

下記のようにヘルプが表示されればダウンロードは成功です。

PS C:\Users\____> & ${env:USERPROFILE}\Downloads\mc
mc.exe: Configuration written to `C:\Users\____\mc\config.json`. Please update your access credentials.
mc.exe: Successfully created `C:\Users\____\mc\share`.
mc.exe: Initialized share uploads `C:\Users\____\mc\share\uploads.json` file.
mc.exe: Initialized share downloads `C:\Users\____\mc\share\downloads.json` file.
NAME:
  mc - MinIO Client for cloud storage and filesystems.

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

COMMANDS:
  alias      set, remove and list aliases in configuration file
  ls         list buckets and objects
  mb         make a bucket
  rb         remove a bucket
  cp         copy objects
  mirror     synchronize object(s) to a remote site
  cat        display object contents
  head       display first 'n' lines of an object
  pipe       stream STDIN to an object
  share      generate URL for temporary access to an object
  find       search for objects
  sql        run sql queries on objects
  stat       show object metadata
  mv         move objects
  tree       list buckets and objects in a tree format
  du         summarize disk usage recursively
  retention  set retention for object(s)
  legalhold  manage legal hold for object(s)
  diff       list differences in object name, size, and date between two buckets
  rm         remove object(s)
  version    manage bucket versioning
  ilm        manage bucket lifecycle
  encrypt    manage bucket encryption config
  event      manage object notifications
  watch      listen for object notification events
  undo       undo PUT/DELETE operations
  anonymous  manage anonymous access to buckets and objects
  tag        manage tags for bucket and object(s)
  replicate  configure server side bucket replication
  admin      manage MinIO servers
  update     update mc to latest release

GLOBAL FLAGS:
  --autocompletion              install auto-completion for your shell
  --config-dir value, -C value  path to configuration folder (default: "C:\\Users\\____\\mc")
  --quiet, -q                   disable progress bar display
  --no-color                    disable color theme
  --json                        enable JSON lines formatted output
  --debug                       enable debug output
  --insecure                    disable SSL certificate verification
  --help, -h                    show help
  --version, -v                 print the version

TIP:
  Use 'mc --autocompletion' to enable shell autocompletion

VERSION:
  RELEASE.2022-01-07T06-01-38Z

エイリアスを新規作成します

エイリアスとは、特定の MinIO サーバーにログインするための情報と関連づけられた MinIO の変数です。MinIO サービスの名前に相当します。mc コマンドから操作対象の MinIO サービスを指定するときにエイリアスを指定します。

PowerShell で下記のように入力します。minioalias という名前でエイリアスを設定しています。

& ${env:USERPROFILE}\Downloads\mc alias set  minioalias  http://localhost:9000  minioadmin  minioadmin

パラメーターの意味は下記の通りです。

mc alias set  __MinIO_Alias__  __MinIO_EndPoint__  __MinIO_AccessKey__  __MinIO_SecretKey__

接続先の情報を表示します

接続先がどこにあるのか、接続先が生きているのかを確認します。

PowerShell で下記のように入力します。minioalias の部分は表示対象のエイリアスです。

& ${env:USERPROFILE}\Downloads\mc  admin info minioalias

たとえば下記のように表示されます。

PS C:\Users\____> & ${env:USERPROFILE}\Downloads\mc  admin info minioalias
●  localhost:9000
   Uptime: 38 minutes
   Version: 2022-01-08T03:11:54Z
   Network: 1/1 OK

バケットを新規作成して一覧します

バケットを新規作成するには、PowerShell で下記のように入力します。

& ${env:USERPROFILE}\Downloads\mc  mb minioalias/bucket1

バケットを一覧するには、PowerShell で下記のように入力します。

& ${env:USERPROFILE}\Downloads\mc  ls minioalias

たとえば下記のように表示されます。

PS C:\Users\____> & ${env:USERPROFILE}\Downloads\mc  mb minioalias/bucket1
Bucket created successfully `minioalias/bucket1`.
PS C:\Users\____> & ${env:USERPROFILE}\Downloads\mc  ls minioalias
[2022-01-09 22:43:56 JST]     0B bucket1/

ファイルをアップロードします

PowerShell で下記のように入力します。

echo a > _a.txt  #// アップロードするファイルを用意します
& ${env:USERPROFILE}\Downloads\mc  cp _a.txt  minioalias/bucket1
rm _a.txt  #// アップロードしたのでローカルのファイルを削除します
& ${env:USERPROFILE}\Downloads\mc  ls minioalias/bucket1

たとえば下記のように表示されます。

PS C:\Users\____> & ${env:USERPROFILE}\Downloads\mc  mb minioalias/bucket1
Bucket created successfully `minioalias/bucket1`.
PS C:\Users\____> & ${env:USERPROFILE}\Downloads\mc  ls minioalias
[2022-01-09 22:43:56 JST]     0B bucket1/
PS C:\Users\____> echo a > _a.txt  #// アップロードするファイルを用意します
PS C:\Users\____> & ${env:USERPROFILE}\Downloads\mc  cp _a.txt  minioalias/bucket1
_a.txt:               8 B / 8 B [==========================================================================] 843 B/s 0s
PS C:\Users\____> rm _a.txt  #// アップロードしたのでローカルのファイルを削除します
PS C:\Users\____> & ${env:USERPROFILE}\Downloads\mc  ls minioalias/bucket1
[2022-01-09 22:46:52 JST]     8B _a.txt

MinIO コンソールには下記のように表示されます。

buckets

Browse ボタン(右上)を押すと、バケットの中のオブジェクト(ファイル)の一覧を表示できます。

objects

コマンドのドキュメント

コマンドの公式ドキュメントは下記にあります。下記のリンク先の 7. Commands に一覧があります。

https://docs.min.io/docs/minio-client-complete-guide.html

終了とアンインストール

MinIO サービスを終了します

minio.exe が実行されているシェルで Ctrl + C を押します。

MinIO や mc をアンインストールします

PowerShell で下記のように入力します。

rm  ${env:USERPROFILE}\Downloads\minio.exe
rm  ${env:USERPROFILE}\Downloads\mc.exe

minio.exe が使っていたフォルダーを削除します:

PowerShell で下記のように入力します。

rm -r -fo ${env:USERPROFILE}\mc
rm -r -fo ${env:USERPROFILE}\AppData\Roaming\MinIO

Discussion

ログインするとコメントできます