何故か久しぶりに起動した MinIO が動かなくなっている人へ
久しぶりに MinIO を含むテスト環境をDocker等で起動すると何故かMinIOが動かない or 直接ファイルシステムに作ったオブジェクトが取得できなくなってしまった人は、MinIOを RELEASE.2022-05-26T05-48-41Z
以前のバージョンに固定してみてください。
services:
# テスト用のS3
test_s3:
- image: minio/minio:latest
+ image: minio/minio:RELEASE.2022-05-26T05-48-41Z
ports:
- "19999:19999"
- "19998:19998"
environment:
MINIO_ROOT_USER: testuser
MINIO_ROOT_PASSWORD: testpassword
volumes:
- ./s3/data:/data
- ./s3/config:/root/.minio
command: server --address ":19999" --console-address ":19998" /data
上記のコンテナが立っている状態 (docker compose up -d
)で、ローカルファイルシステム上の書き込みが直接CLIで取得できるか見てみます。
export AWS_ACCESS_KEY_ID=testuser
export AWS_SECRET_ACCESS_KEY=testpassword
# ファイルシステムに書き込まれたものがminio越しに見えるかチェックしてみる
mkdir s3/data/foobucket
echo "hello!" > s3/data/foobucket/test.txt
aws --endpoint-url http://localhost:19999 s3 ls s3://foobucket/
# 2024-09-25 17:50:00 7 test.txt
aws --endpoint-url http://localhost:19999 s3 cp s3://foobucket/test.txt -
# hello!
なぜそれより後のバージョンのMinIOは(うまく)動かないのか?
MinIOの従来型のファイルシステムをそのままS3のバケットとして使える機能 (filesystem mode) は2020年に開発が終わり、リリース RELEASE.2022-10-24T18-35-07Z
を最後に機能自体が削除されました。 これ以降の MinIO ではAPI越しにオブジェクトストレージを編集する必要があります。詳しくは以下の公式ドキュメントを参照してください。
それであれば、なぜそれより4ヶ月以上前のはずの RELEASE.2022-06-02T02-11-04Z
以降のバージョンも駄目かというと、そのバージョンからファイルシステム上からの直接の変更などMinIOが把握しない形でバケットを作成してしまうと、バケットリストアップから省かれてしまうからです。1
記事冒頭の ファイルシステム越しに読み書きできるかチェックしてみる.sh
のスクリプトもバケットリストアップから失敗します。mkdir
しただけのディレクトリはバケットと認識してくれないようです。一度MinIOに何らかの形でバケットを把握させれば(メタデータを作成させれば)その後はきちんと把握されるようです。
バージョンごとの挙動をまとめるとこうなります。
バージョン | ファイルシステム上でいきなりバケット作成 | ファイルシステムモードのサポート |
---|---|---|
- RELEASE.2022-05-26T05-48-41Z
|
OK | OK |
RELEASE.2022-06-02T02-11-04Z -RELEASE.2022-10-24T18-35-07Z
|
NG | OK |
RELEASE.2022-10-29T06-21-33Z - |
NG | NG |
おそらく開発・テスト環境で MinIO を使っていた人は、ファイルシステムそのままのS3が使えるという点でMinIOを使っていた(重宝していた)と思うので、急場しのぎであれば過去バージョン(RELEASE.2022-05-26T05-48-41Z
)に修正して対応するのが一番早いです。
(無論、ちゃんとAPI経由で操作するのが理想的ですが、CIなどでいちいちAWS SDKをインストールして呼び出すのは面倒ではあります)
-
各種バージョンに対し記事中の
ファイルシステム越しに読み書きできるかチェックしてみる.sh
の内容を一つずつ切り替えて実際にローカル試験したところ、RELEASE.2022-06-02T02-11-04Z
以降から動作が変わっていることを確認しました。 ↩