Open-Source AWS Emulator That Spawns Real Databases, Not Mocks
drop-in local AWS emulation for testing system-bus functions that touch SQS/SNS/S3 without cloud costs or LocalStack licensing
LocalStack moved its core services behind a paid tier. If you relied on Community Edition in your CI pipelines or local dev, you’ve been quietly looking for a way out.
MiniStack is the MIT-licensed drop-in. Same port (4566), same endpoint URL pattern, fully compatible with boto3, AWS CLI, Terraform, CDK, and Pulumi. No account, no API key, no telemetry. Swap the endpoint variable and you’re done.
The design decision worth noticing: MiniStack doesn’t fake everything. When you create an RDS instance, it spins up a real Postgres or MySQL container. ElastiCache starts real Redis. Athena queries run through DuckDB. ECS runs actual Docker containers. That’s a meaningful fidelity gain — your tests run against real database behavior, not mocked approximations of it.
The footprint is also just smaller. ~150MB Docker image vs LocalStack’s ~1GB. ~30MB RAM at idle vs ~500MB. Sub-2-second startup. 34 services on that single port: S3, SQS, SNS, DynamoDB, Lambda, Kinesis, EventBridge, Step Functions, RDS, ElastiCache, Secrets Manager, SSM, and more. Python 3.12, pip-installable, or pull it straight from Docker Hub.
Key Ideas
- LocalStack moved core services to paid plans; MiniStack fills the gap as a fully MIT-licensed alternative with zero credential requirements
- Drop-in compatible at
localhost:4566— same protocol, same endpoint pattern, works with every AWS SDK and IaC tool - Real infrastructure delegation instead of pure mocking: RDS → actual Postgres/MySQL containers, ElastiCache → real Redis, Athena → DuckDB, ECS → real Docker containers
- 34 AWS services covered including S3 (with Object Lock + versioning), SQS (FIFO + DLQ), SNS fanout, DynamoDB, Lambda, Kinesis, EventBridge, Step Functions, RDS, ElastiCache, Secrets Manager, and SSM Parameter Store
- ~150MB image, ~30MB RAM idle, <2s startup — meaningfully lighter than LocalStack
- Optional S3 disk persistence via
S3_PERSIST=1environment variable awslocalwrapper script included for ergonomic CLI use without the--endpoint-urlflag on every command
Links
- MiniStack on GitHub — source, README, changelog
- Docker Hub: nahuelnucera/ministack
- PyPI: ministack
- LocalStack — the paid incumbent this replaces