aws S3 互換ストレージ MinIO 入門 〜 mc.exe を試しに動かしてみる
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 を開きます。
Username にはサーバー起動時に表示される RootUser、つまり minioadmin を入力します。
Password にはサーバー起動時に表示される RootPass、つまり minioadmin を入力します。
ログインしたらダッシュボードが表示されます。
Tools メニューの 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 コンソールには下記のように表示されます。
Browse ボタン(右上)を押すと、バケットの中のオブジェクト(ファイル)の一覧を表示できます。
コマンドのドキュメント
コマンドの公式ドキュメントは下記にあります。下記のリンク先の 7. Commands に一覧があります。
終了とアンインストール
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