無料でAWSをローカルでシミュレーションできるエミュレーター「MiniStack」、60以上のAWSサービスを単一ポートで利用可能でマルチアカウント&マルチリージョン対応、セルフホスト可能

AWSを利用するアプリを開発する場合、動作確認のたびにAWS上へS3・DynamoDB・Lambdaなどのリソースを作成すると、環境の構築・削除・利用料金の管理などが必要になります。そこで、AWSのAPIをPC上で再現し、AWS CLIやTerraformなどから60以上のAWSサービスをローカル環境だけで無料で利用できるエミュレーター「MiniStack」を使ってみました。
MiniStack — The Best AWS Emulator | Free Open-Source LocalStack Alternative
https://ministack.org/

ministackorg/ministack: Ministack: Free, open-source local AWS emulator - 60+ services, Terraform compatible, real databases. Free forever. MIT licensed.
https://github.com/ministackorg/ministack
◆MiniStackの構築方法
今回はWindowsにDocker DesktopとGit for WindowsのGit Bash、およびAWS CLIを用意した環境で構築します。作業フォルダー内にcompose.ymlを作成。
services:
ministack:
image: ministackorg/ministack:latest
ports:
- "4566:4566"
environment:
- PERSIST_STATE=1
- S3_PERSIST=1
- LOG_LEVEL=INFO
volumes:
- ./data/state:/tmp/ministack-state
- ./data/s3:/tmp/ministack-data/s3
コンテナを起動すれば構築完了です。
docker compose up -d
◆MiniStackの使い方
Git Bashを開き、AWS CLIで利用するテスト用の認証情報を設定します。
export AWS_ACCESS_KEY_ID=test export AWS_SECRET_ACCESS_KEY=test export AWS_DEFAULT_REGION=us-east-1
まずS3にバケットを作成します。
aws --endpoint-url=http://localhost:4566 s3 mb s3://test-bucket
バケットが存在しているかlsコマンドを実行すると作成したtest-bucketが表示されます。実際のAWSと同じAWS CLIを使いながらテストが可能です。
aws --endpoint-url=http://localhost:4566 s3 ls #実行結果 2026-10-01 10:05:03 test-bucket
SQSキューも作成できます。S3とSQSでポートを切り替える必要はなく、MiniStackがAWSリクエストを解析して60以上のサービスへ振り分けます。
aws --endpoint-url=http://localhost:4566 sqs create-queue --queue-name test-queue
aws --endpoint-url=http://localhost:4566 sqs list-queues
#実行結果
{
"QueueUrls": [
"http://localhost:4566/000000000000/test-queue"
]
}
◆RDSでは実際のPostgreSQLを起動可能
MiniStackはAPIのレスポンスだけを再現するサービスに加えて、RDSではPostgreSQL・MySQL・MariaDB、Amazon ElastiCacheではRedisなどの実際のソフトウェアをDockerコンテナとして起動できます。
docker ps #実行結果 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 2890264044ca postgres:15-alpine "sh -c 'chown -R pos…" About a minute ago Up 58 seconds 0.0.0.0:15432->5432/tcp, [::]:15432->5432/tcp ministack-rds-281afe4a44d7-instance-mydb 3a672c1c3863 ministackorg/ministack:latest "python -m ministack" 2 minutes ago Up 2 minutes (healthy) 0.0.0.0:4566->4566/tcp, [::]:4566->4566/tcp ministack-ministack-1
RDSの場合はAWSのRDS APIに対する管理部分をMiniStackが処理し、実際のデータベース処理はローカルで起動したPostgreSQLなどが担当する構成となります。このため単純なAPIモックだけでなく、アプリケーションから実際にSQLを発行する部分までローカルで確認できます。
◆複数のAWSアカウントとリージョンを再現
MiniStackでは12桁の「AWS_ACCESS_KEY_ID」をAWSのアカウントIDとして扱い、1つのMiniStack内に複数アカウントのリソースを分離して保持できます。
AWS_ACCESS_KEY_IDに「111111111111」を設定しステータスを確認。
export AWS_ACCESS_KEY_ID=111111111111
aws --endpoint-url=http://localhost:4566 sts get-caller-identity
#実行結果
{
"UserId": "111111111111",
"Account": "111111111111",
"Arn": "arn:aws:iam::111111111111:root"
}
AWS_ACCESS_KEY_IDに「222222222222」を設定しステータスを確認。
export AWS_ACCESS_KEY_ID=222222222222
aws --endpoint-url=http://localhost:4566 sts get-caller-identity
#実行結果
{
"UserId": "222222222222",
"Account": "222222222222",
"Arn": "arn:aws:iam::222222222222:root"
}
さらにリージョン情報も分離されるため、us-east-1とeu-west-1へ同じ名前のSQSキューを作成しても、互いに独立したリソースとして扱われます。各リージョンでSQSキューを作成後、確認コマンドを実行すると以下のように表示されました。
aws --endpoint-url=http://localhost:4566 \
> --region us-east-1 \
> sqs list-queues
#実行結果
{
"QueueUrls": [
"http://localhost:4566/222222222222/jobs"
]
}
aws --endpoint-url=http://localhost:4566 \
> --region eu-west-1 \
> sqs list-queues
#実行結果
{
"QueueUrls": [
"http://localhost:4566/222222222222/jobs"
]
}
アカウントとリージョンを分けることで、1つのMiniStackで複数の開発者が利用するテスト環境の構築が可能です。
◆その他の機能
MiniStackはS3・SQS・DynamoDB・Lambdaなどの主要サービスに加えて、EC2・ECS・EKS・CloudFormation・Step Functions・Amazon Bedrockなど60以上のAWSサービスを扱えます。
| カテゴリ | 対応サービス |
|---|---|
| Core | S3・DynamoDB・SQS・SNS・Lambda・Lambda MicroVMs・Lambda Core・IAM・STS・Secrets Manager・SSM・CloudFormation |
| Observability | CloudWatch・CloudWatch Logs・CloudTrail |
| Integration & Events | EventBridge・EventBridge Scheduler・EventBridge Pipes・Step Functions・IoT・IoT Wireless・Amazon Location・Amazon MQ |
| Streams & Analytics | Kinesis・Firehose・Athena・Glue・EMR・OpenSearch・MSK(Kafka)・MediaConnect |
| Compute & Containers | EC2・IMDS・ECS・EKS・Batch・Auto Scaling・ALB / ELBv2 |
| Databases & Cache | Aurora DSQL・RDS・RDS Data API・ElastiCache |
| Networking & DNS | Route53・CloudFront・CloudFront KeyValueStore・ServiceDiscovery |
| APIs & Edge | API Gateway v1・API Gateway v2・AppSync |
| Security & Crypto | KMS・ACM・AWS Signer・WAFv2・WAF Classic・Amazon Inspector |
| Identity & Accounts | Cognito・Organizations・Account |
| AI & ML | Amazon Bedrock・Bedrock Runtime・Bedrock Agent・Bedrock Agent Runtime・Bedrock AgentCore |
| Communication | SES |
| Storage & Transfer | EFS・ECR・Transfer Family・Amazon Transcribe・Amazon Translate・S3 Files・S3 Tables |
| Config & Dev Tools | AppConfig・CodeBuild・AWS Config・Cloud Control API・MWAA・Cost & Usage Report |
| Cross-service & Backup | Resource Groups Tagging API・AWS Backup・Resource Groups |
◆MiniStack利用時の注意点
MiniStackはAWSのすべての挙動を完全に再現する仮想クラウドではなく、VPCのパケットルーティングやDNS伝播などローカル環境では再現対象としていない機能があります。
◆MiniStackの評価
ソーシャル系ニュースサイトのHacker Newsでは、MiniStackについてさまざまな議論が行われており「主に重要なのはコストではなく、反復速度とCI環境で高速に実行できること」という評価がある一方、「DynamoDBのサービス例外・入力値検証・結果整合性・エッジケースを適切に再現していない」という意見も投稿されています。これに対して作者は「対象用途は正しい操作を正しいデータで呼び出しているかを確認する統合テストで、本番環境と完全に同じ挙動を再現することではない」と説明しています。
・関連記事
AWSの膨大で複雑なサービス群をすべて「たった1行」で説明していくとこうなる - GIGAZINE
独自のデータベースやWordPressなどのアプリを簡単にセルフホストできて管理できるオープンソースPaaS「Coolify」 - GIGAZINE
FirebaseのようにGUIでバックエンドを構築できる無料でオープンソースのシステム「PocketBase」、わずか1ファイルのみ - GIGAZINE
イランによるAmazonのデータセンターへの攻撃により顧客データが永久に失われる - GIGAZINE
AWSを10年運用してわかったことをAmazonの最高技術責任者が語る - GIGAZINE
・関連コンテンツ
in ソフトウェア, レビュー, Posted by darkhorse_logmk
You can read the machine translated English article MiniStack is a free emulator that allows….







