MiniStack — 무료 오픈소스 로컬 AWS 에뮬레이터
LocalStack 유료화에 대응하는 무료 MIT 라이선스 대체 솔루션. 34~38개 AWS 서비스를 단일 포트에서 실행하며, RDS/ElastiCache/ECS는 실제 Docker 컨테이너를 구동한다.
- GeekNews: https://news.hada.io/topic?id=28106
- 공식 사이트: https://ministack.org/
핵심 요약
- AWS 환경을 로컬에서 완전히 재현할 수 있는 무료 오픈소스 에뮬레이터 (LocalStack 대체)
- 34~38개 AWS 서비스를 단일 포트 (4566)에서 실행
- 실제 Postgres, Redis, Docker 컨테이너를 구동하여 인프라 수준의 테스트 환경 제공
- AWS SDK, CLI, Terraform, CDK, Pulumi 등과 완전 호환
- 계정 등록이나 텔레메트리 없이 MIT 라이선스
- 2초 시작 속도, 30MB 메모리 사용량, 150~200MB Docker 이미지
LocalStack과의 비교
| 항목 | LocalStack Free | MiniStack |
|---|---|---|
| 라이선스 | BSL/Proprietary | MIT (무료) |
| 핵심 서비스 | 유료화됨 | 모두 무료 |
| Lambda, IAM, SSM, EventBridge 등 | Pro 전용 | 무료 포함 |
| RDS, ElastiCache, ECS | 에뮬레이션 | 실제 컨테이너 |
| 시작 속도 | 느림 | ~2초 |
| 메모리 사용량 | 높음 | ~30MB |
| Docker 이미지 | 큼 | 150~200MB |
| 계정/텔레메트리 | 필요 | 없음 |
포함된 AWS 서비스 (34~38개)
스토리지 & 데이터:
- S3: 버킷, 객체, 버전 관리, 암호화, 수명 주기, CORS, Object Lock, 복제
- DynamoDB: CRUD, 쿼리, 스캔, 트랜잭션, TTL, GSI
- RDS: 실제 Postgres/MySQL Docker 컨테이너 구동
- ElastiCache: 실제 Redis/Memcached Docker 컨테이너 구동
- Athena: DuckDB를 통해 실제 SQL 쿼리 실행
컴퓨팅 & 오케스트레이션:
- Lambda: 실제 Python 실행, 웜 워커, SQS 이벤트 매핑, Layers
- ECS: RunTask로 실제 Docker 컨테이너 실행
- EC2 / EMR / EBS / EFS / ALB
메시징 & 이벤트:
- SQS: FIFO, DLQ, 배치, 가시성
- SNS: 주제, 구독, SQS 팬아웃, 배치 발행
- EventBridge: 버스, 룰, 타겟, Lambda 디스패치, 아카이브
- Kinesis: 스트림, 샤드 분할/병합, 컨슈머
- Step Functions: 전체 ASL 엔진, 동기 실행, 태스크 토큰
보안 & 관리:
- IAM / STS / Secrets Manager / CloudWatch / SSM Parameter Store
- SES: 이메일 전송, 아이덴티티, 구성 세트
- API Gateway v1·v2: HTTP/REST API, Lambda 프록시
- Route53 / Cognito / ACM / WAF / CloudFormation / Glue
실제 인프라 기반 동작
MiniStack의 핵심 차별점은 단순 에뮬레이션이 아닌 실제 컨테이너 구동:
CreateDBInstance→ 실제 Postgres/MySQL Docker 컨테이너 생성, 로컬 포트에서 직접 연결CreateCacheCluster→ 실제 Redis 컨테이너 실행, 세션 저장소로 활용 가능RunTask→ 실제 Docker 컨테이너 실행, ECS 태스크 정의 테스트- Athena → DuckDB를 통해 실제 SQL 쿼리 실행
빠른 시작
# Docker 한 줄로 실행
docker run -p 4566:4566 nahuelnucera/ministack
# S3 버킷 생성
aws --endpoint-url=http://localhost:4566 s3 mb s3://my-bucket
# 실제 Postgres RDS 인스턴스
aws --endpoint-url=http://localhost:4566 rds create-db-instance \
--db-instance-identifier mydb --engine postgres \
--master-username admin --master-user-password secret
# → localhost:15432에서 실제 Postgres 실행
# 실제 Redis ElastiCache
aws --endpoint-url=http://localhost:4566 elasticache \
create-cache-cluster --cache-cluster-id my-redis --engine redis
# → localhost:16379에서 실제 Redis 실행개발자 정보
- 개발자: Nahuel (nahuelnucera)
- 라이선스: MIT
- GitHub + Docker Hub에서 공개
- 955개 테스트 통과