はじめに
弊社はAWSを基盤としたクラウドサービスを提供しており、ローカル開発環境上でS3 API動作検証(エミュレーション)を容易に行うため、これまでMinIOを利用していました。
MinIOは、Amazon S3と互換性のあるオブジェクトストレージをローカル環境で簡単に構築できるOSSです。
弊社では、クラウドサービス開発時のS3 API動作検証にMinIOを活用していました。
しかし、MinIOのDockerイメージのサポート終了に伴い、ローカル開発環境(Docker)でAmazon S3互換ストレージの代替が必要となりました。
そこで、Rust製S3互換ストレージ「RustFS」を実際に検証した内容について、選定理由・注意点・導入手順をまとめます。
選定理由
- S3互換APIをサポートしている
- Docker Composeで簡単にセットアップできる
- 管理コンソールに対応している
- データ永続化がDockerボリュームで可能
これらの条件を満していたため、RustFSを試してみました。
注意点
- RustFSは2026年1月時点でα版です。
公式に「本番環境では使用しないでください」と明記されています- RustFS is under rapid development. Do NOT use in production environments!(出典:https://hub.docker.com/r/rustfs/rustfs)
- RustFSは日本語の情報がまだ少ないです
- MinIOとは異なり、RustFSがサポートしているS3互換APIは基本的な操作に限定されています
- MinIOは完全なS3互換APIを提供しています
- RustFSは
マルチパートアップロードなどは非対応です。RustFSの導入検証時には特に問題はありませんでしたが…
- IAM設定エクスポートを行うと、ユーザーのパスワードが平文で含まれます
- (出典:https://github.com/rustfs/rustfs/issues/706)
- 本番環境での運用は現時点では難しい状況です
RustFSは開発中のプロダクトのため注意すべき点が多いですが、S3 API動作検証の用途では問題ないと判断したため、導入検証を行いました。
導入手順
1. docker-compose.ymlでRustFSを起動
services:
s3:
image: rustfs/rustfs:latest
container_name: test-rustfs
ports:
- "9000:9000" # S3 API用ポート
- "9001:9001" # 管理コンソール用ポート
volumes:
- ./s3/data:/data
command: >
--address 0.0.0.0:9000
--console-enable
--access-key rustfs-access
--secret-key rustfs-secret
/data
restart: unless-stopped
networks:
- n_s3
networks:
n_s3:
driver: bridge
- イメージタグはlatestを使用していますが、バージョン指定を推奨します。
- access-key/secret-keyはスクリプトに直接書き込まず、外部定義(例:.envファイル等)を利用することを推奨します。
起動コマンド例:
docker compose up -d
2. 管理コンソールからバケット作成
- ブラウザで http://localhost:9001 にアクセスします
- ログイン画面でRustFSのaccess-key/secret-keyを入力します
- バケットを作成します
RustFSの管理コンソールのログイン画面キャプチャ
(RustFSの管理コンソールのスクリーンショット画像)
- 管理コンソールからバケット・フォルダ・ファイルの登録や編集が可能です
- データは ./s3/data 内に保存され、再起動後も保持されます
- ./s3/data/.rustfs.sys はRustFSのメタデータ管理用ディレクトリです
RustFSのバケット一覧とフォルダのキャプチャ
(RustFSの管理コンソールのスクリーンショット画像)
3. AWS CLIで接続テスト
- C:\Users<ユーザー名>.aws\credentials に以下を記載します
[default]
aws_access_key_id=rustfs-access
aws_secret_access_key=rustfs-secret
- 疎通確認(バケット一覧表示)
aws --endpoint-url http://127.0.0.1:9000 s3api list-buckets
まとめ
Docker環境があれば、上記手順でRustFSを簡単に導入できます。
RustFSはα版ですが、S3の検証用途(S3エミュレーション)には十分利用可能でした。
今後、問題がなければMinIOの代替としてRustFSを継続利用したいと考えています。
追記
- MinIOとは異なり、RustFSがサポートしているS3互換APIは基本的な操作に限定されています
- MinIOは完全なS3互換APIを提供しています
- RustFSは
マルチパートアップロードなどは非対応です
導入検証の際は特に問題ありませんでしたが、最近、弊社クラウドサービスにS3のマルチパートアップロードを利用する機能が追加されました。
この機能は大容量ファイルのアップロード時のみ使用されるため、通常の検証では問題ありませんが、大容量ファイルのアップロードに関する検証はAWS上で実施する必要があります。
また、最近、脆弱性(https://nvd.nist.gov/vuln/detail/CVE-2025-68926)が公開されました(※ 1.0.0-alpha.78 で対処済み)。
RustFSはまだα版です。ご使用の際はご注意ください。

