Open-Source AWS Emulator That Spawns Real Databases, Not Mocks

repoinfrastructureawsdevtoolstestinglocal-developmentopen-sourcepython

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=1 environment variable
  • awslocal wrapper script included for ergonomic CLI use without the --endpoint-url flag on every command