Litmus — 話題のニュースを、深く読み解く。 RSS
ソフトウェア

MiniStackは登録なしでAWSを丸ごとローカルに再現する

AWSローカルエミュレータMiniStackは、アカウント登録なしに60以上のAWSサービスを無料で動かせる。RDSやElastiCacheは本物のPostgreSQL・Redisコンテナとして動く仕組みも確かめた。

ノートパソコンのキーボードを打つ手元と、コードが表示された画面

イメージ写真 記事の内容を撮影したものではありません。Photo by Jakub Zerdzicki on Pexels

この記事には Amazon アソシエイトのリンクを含みます。

S3にファイルを置く処理や、DynamoDBへの書き込みを含むアプリをテストするとき、本番のAWSを呼び出すと、テスト1回ごとに料金と待ち時間がかかる。手元のパソコンだけでAWSの動きを再現できれば、この悩みは消える。そういうツールを「LocalStack」という名前で知っている人は多いはずだ。

ところが、今のLocalStackを無料で使おうとすると、まずアカウント登録とログインを求められる。そのすぐ後に見つけたのが、登録なしで無料のまま動く「MiniStack」というツールだった。なぜ無料で登録なしに成り立つのか、そして「エミュレータ」としての再現度はどこまで本物に近いのか、確かめてみた。

無料のはずが、ログインを求められる

LocalStackを使おうとして、まず引っかかるのがここだ。公式ドキュメントによれば、推奨の起動方法であるlstkコマンドを初めて実行すると、ブラウザでのログイン画面が開く。LocalStackのインストール手順には「LocalStackのAWS機能にはAuth Tokenが必要」と明記されている。クレジットカードは要らないが、アカウントは要る。

無料プランは「Hobby」という名前で提供されており、LocalStackの料金ページによれば対応サービスは30以上、利用は個人の非商用利用に限られる。同じページには「LocalStackのコミュニティ版は今後、セキュリティパッチを含む製品アップデートを受け取らなくなる」という告知もある。つまり、登録なしで誰でも使えた従来の無料版は、更新が止まる方向に置かれている。

自分はLocalStackを「登録なしでさっと試せるツール」だと思い込んでいたので、ドキュメントを読み直してこの仕様に気づいたときは意外だった。登録そのものは数分で終わる手間だが、「ちょっと試したいだけ」のときにブラウザでのログインを挟む煩わしさは残る。では、登録なしで動く無料の選択肢はないのか。

登録なしで動く新顔、MiniStack

MiniStack公式サイトに答えがあった。docker run -p 4566:4566 ministackorg/ministackという1行を実行するだけでよい。立ち上がったポート4566に、AWS CLIやSDKの接続先を向ければ動き出す。アカウント登録もAPIキーの発行も要らない。

GitHubリポジトリはMITライセンスで公開されている。2026年10月3日時点の最新バージョンはv1.5.21で、数日おきに更新が続いている現役のプロジェクトだ。

対応するAWSサービスは60以上あり、主要な分野を横断している。

  • ストレージ: S3、EBS、EFS
  • メッセージング: SQS、SNS、Kinesis
  • データベース: DynamoDB、RDS、ElastiCache、Aurora DSQL
  • コンピュート: Lambda、ECS、EC2、EKS
  • ネットワーク: API Gateway、CloudFront、Route53
  • セキュリティ: IAM、KMS、Cognito

軽さを示す数字もある。MiniStack公式サイトの比較表によれば、起動時間と待機中のメモリ使用量で次の差があるという。

0102030秒MiniStack: 2秒未満LocalStack無料版: 15〜30秒LocalStack無料版: 15〜30秒2秒未満15〜30秒MiniStackLocalStack無料版 0100200300400500MBMiniStack: 約30MBLocalStack無料版: 約500MB約30MB約500MBMiniStackLocalStack無料版

この数値はMiniStackの運営者自身が作った比較表によるもので、第三者が測り直したものではない。ただし、起動コマンドが1行で済み、アカウント登録の画面を経由しない分だけ「試すまでの手数」が少ないのは、こちらで確認した事実だ。登録の有無と対応サービス数を含めて整理すると、次のようになる。

項目LocalStack(無料のHobbyプラン)MiniStack
利用開始に必要なものアカウント登録とログイン(Auth Token)docker runコマンド1行
商用利用非商用利用に限定制限の記載なし(MITライセンス)
対応サービス数30以上60以上
RDS・ElastiCache相当API互換のモック本物のPostgreSQL・Redisコンテナ

表の最後の行にある「本物のPostgreSQL・Redisコンテナ」が、もう一つの引っかかりどころだった。「エミュレータ」と聞くと、API呼び出しにそれらしい返事を返すだけの作り物を想像しがちだが、MiniStackの中身はそれだけではない。

中身は作り物ではない、本物のデータベースが動く

多くのAWSモックは、たとえばDynamoDBへの書き込み要求に対して、成功したことだけを示す決まった形の応答を返すだけだ。裏でデータベースエンジンが実際に動いているわけではない。これは軽くて速い代わりに、複雑なクエリや細かな制約まで本物と同じに動くとは限らない。

MiniStackのRDSとElastiCacheは違う設計になっている。公式サイトの機能説明によれば、RDSを起動すると裏でDocker上に実際のPostgreSQL・MySQL・MariaDBのコンテナが立ち上がる。ElastiCacheを起動すると、同じように本物のRedisコンテナが立ち上がる。ECSのタスクも、実際のDockerコンテナとして動く。タスク定義に書いた内容がそのまま動くかどうかを、クラウドへ上げる前にローカルで確かめられるということだ。

つまり、アプリからクエリを送ると、作り物の返事ではなく本物のPostgreSQLやRedisが実際に処理して返す。SQLの細かい挙動や、Redisのコマンドの振る舞いまで、本番のAWSに近い形で確かめられる。

「エミュレータ」という言葉から、自分はもっと簡易な作り物を想像していた。サインアップなしという手軽さと、中身が本物のデータベースだという点が同時に成り立っているのは、調べていて一番驚いた部分だ。

この設計がすべてのサービスに及ぶわけではない。S3やDynamoDBなど大半のサービスはAPI互換のモック実装で、「本物のエンジンが動く」のはRDS・ElastiCache・ECSなど一部にとどまる。それでも、データベースの挙動を確かめたい場面でこの差は大きい。では、実際に自分の環境で試すには何をすればいいのか。

試す前に知っておきたい制限

今すぐ試すなら、手順は2つだけだ。

  1. Dockerが入った環境でdocker run -p 4566:4566 ministackorg/ministackを実行する
  2. AWS CLIやSDK、Terraform・AWS CDK・Pulumiの接続先を、ポート4566へ向ける

公式サイトには、Python(Boto3)・Node.js・Java・Goの各SDKから接続できると記載がある。JUnit 5やSpring Bootでよく使う「Testcontainers」からも、同じように接続できるという。普段使っている開発ツールの接続先を変えるだけで、AWSの代わりに使い始められる。

一つだけ、本文で触れておきたい制限がある。GitHubリポジトリの既知の制限に「地域ごとの状態分離に未対応」とあり、S3とAurora DSQLは複数のリージョンを指定しても状態を共有してしまう。複数リージョンにまたがる構成をローカルで検証したい場合は、この点がそのままでは再現できない。

まとめ

LocalStackの無料版は、登録なしで誰でも使えた従来の形から、アカウント登録を前提とするHobbyプランへ移っている。MiniStackはdocker runコマンド1行で、登録なしに60以上のAWSサービスを無料で動かせる、という形でその隙間に入ってきた。RDSとElastiCacheは本物のPostgreSQL・Redisコンテナとして動く点も確かめられた。複数リージョンの状態分離には未対応という制限はあるが、単一リージョンでAWSに依存するアプリをローカルでテストする用途には、今すぐ試せる選択肢になる。

この記事の先を読む本を探す

特定の本を勧めるものではありません。検索結果から、いまの版と目次を確かめて選んでください。

コメント

気づきや感想をどうぞ

記事への補足や、読んで考えたことをお寄せください。個人情報や、他の人を傷つける内容の投稿はお控えください。

コメントを読み込んでいます…

    ほかの記事

    最新の記事 →