ministack
ministackorg/ministack加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
在云原生开发中,每一次代码提交都走一遍真正的 AWS,会产生真实费用;用 LocalStack 又要面对付费墙和功能限制。MiniStack 正是为解决这个问题而生——它是一个完全免费的开源项目,用纯 Python 在本地模拟 AWS 核心服务,让你可以在没有信用卡、没有云账号的情况下,在笔记本上跑通整套云架构。
这个项目 2026 年 3 月底上线 GitHub,到 9 月底已积累接近 4700 个 Stars、461 个 Forks。18 个 Open Issues 说明社区活跃度高,但核心代码仍在快速迭代中。从技术定位看,它与 LocalStack 直接竞争,但以 MIT 协议开源、完全免费作为核心卖点,正在吸引大量受够了 LocalStack Pro 收费墙的开发者。
MiniStack 的代码组织非常清晰,根目录有 ministack/ 子目录,里面是整个项目的代码主体:
ministack/app.py —— ASGI 应用入口,使用 Hypercorn(ASGI 服务器)启动,负责加载配置和注册路由。ministack/core/router.py —— 统一的 HTTP 路由层,所有 AWS 请求经过 SigV4 签名验证后,分发到对应服务处理器。ministack/core/sigv4.py —— AWS Signature Version 4 签名验证,完全兼容真实 AWS SDK 的认证流程,是实现「零配置迁移」的关键。ministack/core/iam_actions.py + iam_evaluator.py —— IAM 策略评估引擎,读取 botocore 的服务模型来解析请求动作并匹配权限。ministack/core/lambda_runtime.py —— Lambda 运行时模拟,兼容 AWS Lambda Runtime Interface,支持 Python 和 Node.js 函数的本地执行。ministack/core/persistence.py —— 状态持久化,支持内存、Redis、磁盘多种后端。最核心的设计哲学体现在 ministack/services/ 目录:每个 AWS 服务对应一个独立的 Python 文件,如 s3.py、sqs.py、lambda_svc.py、dynamodb.py 等。这种「一个文件一个服务」的扁平化结构让代码可读性极高,添加新服务只需要创建文件并注册到路由即可,无需理解复杂的框架。
MiniStack 目前提供 91 个服务文件,覆盖 AWS 生态中最常用的服务类别:
计算类:Lambda(lambda_svc.py、lambda_core.py、lambda_durable.py、lambda_microvms.py)、EKS(eks.py)、ECS(ecs.py)、Batch(batch.py)
存储与数据库:S3(s3.py)、DynamoDB(dynamodb.py、dynamodb_streams.py)、RDS(rds.py)、Aurora DSQL(dsql.py)、ElastiCache(elasticache.py)、EFS(efs.py)
消息队列:SQS(sqs.py)、SNS(sns.py)、EventBridge(eventbridge.py)、Kinesis(kinesis.py)、Firehose(firehose.py)
API 与网络:API Gateway(apigateway.py、apigateway_v1.py)、AppSync(appsync.py、appsync_events.py)、CloudFront(cloudfront.py)、Route53(route53.py)、ELB/ALB(alb.py)
无服务器专用数据:DynamoDB Streams、Aurora DSQL(真正运行 Postgres 容器而非模拟)、Step Functions(stepfunctions.py)
AI/ML:Bedrock 全家桶(bedrock.py、bedrock_agent.py、bedrock_agent_runtime.py、bedrock_agentcore.py、bedrock_runtime.py)——这是 MiniStack 与 LocalStack 拉开差距的重要差异点,支持 Claude 等模型通过 Bedrock 本地调用。
值得注意的是,几个服务如 cloudformation/(目录而非单文件)说明 CloudFormation 支持有一定的内部模块化结构。
MiniStack 的部署体验是其最大亮点之一,官方提供三种快速上手路径:
pip 安装:pip install ministack && ministack,一行命令,在 http://localhost:4566 启动完整服务,兼容所有 AWS SDK 和 Terraform Provider,启动时间不到 2 秒。
Docker Hub:docker run -p 4566:4566 ministackorg/ministack,无需配置,即开即用。镜像基于 Python 3.13 Alpine,大小经过精心裁剪。
Docker Compose:docker compose up -d 启动完整集群,包含 MiniStack 主服务和 Redis 依赖(用于状态管理),健康检查配置完善(每 10 秒检测一次)。
完整版镜像(ministack:full)额外支持 Athena(通过 DuckDB)、Aurora DSQL(真实 Postgres 容器)、EKS(k3s 容器)、ElastiCache(Redis 容器),占用约 270MB 镜像 + Docker 宿主机资源。对于需要真实数据库行为的场景(如 DynamoDB Streams 消费、Aurora DSQL 强一致性测试),完整版是不可替代的选择。
项目使用 pytest + pytest-xdist 并行测试框架,测试文件组织在 tests/ 目录,关键测试包含 data_plane 标记(需要 Docker 后端真实行为)。pytest-cov 用于覆盖率统计。
代码规范使用 ruff(现代 Python linter),配置文件显示对 E501(行长限制)、E402(import 非顶部)、F811(重定义)等规则有选择性忽略,注释说明是 XML 模板和服务表使行长限制不切实际,意图明确。
核心路由层使用 ASGI(Hypercorn)+ async/await,支持高并发请求处理,Dockerfile 中健康检查通过纯 Python 实现(无 curl 依赖),体现了 Alpine 精简镜像的工程考量。
MiniStack 明确的目标是成为 LocalStack 的免费替代品,这意味着它必须兼容已有的工具生态:
AWS_ENDPOINT_URL 环境变量指向本地 MiniStack,Terraform 配置无需任何修改。awslocal 包装脚本直接替换 aws 命令,提供无缝 CLI 体验。MiniStack 用 91 个服务文件、不到 2 秒的启动时间、MIT 协议的完全免费承诺,重新定义了本地云模拟器的标准。它不是简单的 HTTP mock,而是包含了真实容器运行时(DynamoDB Streams 的 KCL 消费、EKS 的 k3s、Aurora DSQL 的 Postgres 容器),在模拟真实性和性能之间找到了精妙的平衡点。对于正在构建 AWS 原生应用但不想产生云费用的开发团队,MiniStack 已经是目前最值得投入的本地开发环境。

ministack/services/ 一服务一文件,98 个文件)bedrock*.py 共 5 个模块)