MiniStack内部API完全手册health、reset、config三大端点让CI测试快人一步【免费下载链接】ministackMinistack: Free, open-source local AWS emulator - 60 services, Terraform compatible, real databases. Free forever. MIT licensed.项目地址: https://gitcode.com/gh_mirrors/mi/ministackMiniStack是一个免费、开源的本地 AWS 模拟器单端口 456660 服务、Terraform 兼容、MIT 协议它的/_ministack/*内部 API 专为测试自动化设计health端点一键确认服务就绪reset端点清空全部状态获得干净环境config端点在不重启容器的情况下动态修改服务配置。这三个端点正是让 CI 流水线快人一步的核心武器 什么是 MiniStack 内部 API所有 AWS 服务流量S3、SQS、Lambda……都走同一个 4566 端口由网关根据请求特征路由到对应服务。而管理、运维类的操作则被单独划分到/_ministack/前缀路径下与业务数据平面完全隔离。核心路由逻辑见 ministack/app.pyhealth / ready / reset / config 这些快路径请求在进入服务路由之前就被拦截处理因此响应极快、无需解析请求体。health 端点一行命令确认 60 服务就绪curl http://localhost:4566/_ministack/health返回内容包含字段含义services全部可用服务清单每项均为availableeditionlight或fullfull 镜像额外提供 Athena/DuckDBversion当前 MiniStack 版本号ready_scripts初始化脚本执行进度pending / running / completed、成功与失败计数CI 最佳实践容器启动后先轮询该端点返回 200 再开始跑测试可彻底告别连接被拒绝的偶发失败。它还兼容 LocalStack 的/_localstack/health与/health两个别名端点方便直接复用旧脚本。实现见 ministack/app.py配套的健康检查用例在 tests/test_health.py。进阶/_ministack/ready就绪探针如果容器挂载了初始化脚本ready.dhealth 返回 200 时脚本可能还没跑完。此时应轮询GET /_ministack/ready——它会在脚本全部完成且 IoT mTLS 监听器绑定后才返回 200否则返回 503是更严格的真正就绪信号ministack/app.py。reset 端点一键清空每个测试用例都从干净环境开始# 清空所有服务的状态 curl -X POST http://localhost:4566/_ministack/reset # 清空并重新执行初始化脚本boot.d ready.d curl -X POST http://localhost:4566/_ministack/reset?init1这是 CI 场景下最值钱的端点无需重启容器把 60 个服务的内存状态S3 桶、SQS 队列、Lambda 函数、DynamoDB 表……一次性抹干净毫秒级完成并发安全reset 期间其他请求会被自动阻塞直到清完才放行测试永远不会观察到半重置状态ministack/app.py?init1恢复种子数据如果你的ready.d脚本创建了 VPC、队列、基础数据加参数后 reset 会自动重跑这些脚本环境即刻复原兼容持久化开启PERSIST_STATE1时磁盘上的状态文件会一并清除。实现见 ministack/app.py。官方测试套件就是这样用的——会话开始前统一 reset 一次tests/conftest.py配合setUp/beforeEach粒度使用每个测试用例都拥有独立的干净环境。config 端点运行时改配置免重启curl -X POST http://localhost:4566/_ministack/config \ -H Content-Type: application/json \ -d {lambda_svc.LAMBDA_EXECUTOR: docker}端点内置白名单机制ministack/app.py只接受受控的键非法键会被记录日志并忽略响应体回显实际生效的键值{ applied: { lambda_svc.LAMBDA_EXECUTOR: docker } }当前支持的配置键配置键作用lambda_svc.LAMBDA_EXECUTORLambda 执行模式local进程内或docker真实容器athena.ATHENA_ENGINEAthena 查询引擎duckdb真 SQL或mockathena.ATHENA_DATA_DIRAthena DuckDB 数据文件目录stepfunctions._SFN_WAIT_SCALEWait 状态时长缩放因子0 跳过所有等待跑状态机测试飞快 ⚡stepfunctions._sfn_mock_configStep Functions mock 配置兼容 AWS SFN Localcloudtrail._recording_enabled开启/关闭 CloudTrail 记录translate._JOB_RUN_SECONDS/transcribe._JOB_RUN_SECONDS缩短异步任务耗时避免测试傻等alb.TARGET_CONNECT_TIMEOUT/alb.TARGET_IDLE_TIMEOUTALB 目标超时参数官方测试就是靠它在运行中切换 Athena 引擎做对比测试的tests/test_athena.py。典型收益把_SFN_WAIT_SCALE设为0后带多段 Wait 的状态机测试从分钟级降到秒级。附赠两个测试断言神器端点用途GET /_ministack/ses/messages查看 SES 发出的全部邮件支持?account过滤账号GET /_ministack/sqs/messages窥视所有队列中的消息Body、ReceiveCount、FIFO 去重 ID 等支持?account、?region、?QueueUrl过滤这两个端点是纯只读的不会触碰消息可见性时间调用它不影响并发中的ReceiveMessageministack/app.py。断言消费者到底收到了什么不再需要真的消费消息测试写起来简单太多 ✍️在 CI 流水线中组合使用三大端点一个最小化的 CI 工作流以 pytest 为例完整写法见 tests/conftest.pyimport json, urllib.request ENDPOINT http://localhost:4566 def wait_health(): # 1️⃣ 等 health 返回 200 while True: urllib.request.urlopen(f{ENDPOINT}/_ministack/health, timeout5) break def reset_state(initFalse): # 2️⃣ 每个用例前重置 urllib.request.Request( f{ENDPOINT}/_ministack/reset (?init1 if init else ), datab, methodPOST).urlopen(timeout5) if False else \ urllib.request.urlopen(urllib.request.Request( f{ENDPOINT}/_ministack/reset (?init1 if init else ), datab, methodPOST), timeout5) def set_config(**kw): # 3️⃣ 按需调整运行参数 req urllib.request.Request( f{ENDPOINT}/_ministack/config, datajson.dumps(kw).encode(), headers{Content-Type: application/json}, methodPOST) urllib.request.urlopen(req, timeout5)三步组合拳health 等待就绪 → reset 保证隔离 → config 定制行为整个 CI 从重启容器换环境变成HTTP 请求换环境提速效果立竿见影。端点速查表端点方法一句话说明/_ministack/healthGET服务清单 版本 初始化进度兼容/_localstack/health、/health/_ministack/readyGET严格就绪探针脚本未跑完返回 503/_ministack/resetPOST清空全部状态?init1重跑初始化脚本/_ministack/configPOST白名单运行时配置免重启生效/_ministack/ses/messagesGET查看 SES 发出的邮件/_ministack/sqs/messagesGET窥视 SQS 队列消息只读安全更完整的端点说明见 README.md所有端点的源码集中在 ministack/app.py。总结MiniStack 的内部 API 把本地 AWS 环境从一次性容器变成了一个可编程的测试基座health轮询就绪消除启动竞态reset秒级重建干净环境测试互不污染⚙️config运行时调参跳过无意义的等待。对新手来说只要记住这三条命令就足以搭建一套稳定、快速的 AWS 本地测试流水线。MiniStack 永久免费、MIT 协议欢迎立即接入你的 CI 体验一下 【免费下载链接】ministackMinistack: Free, open-source local AWS emulator - 60 services, Terraform compatible, real databases. Free forever. MIT licensed.项目地址: https://gitcode.com/gh_mirrors/mi/ministack创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
企业数字化 ERP 产品动态
相关推荐
BQ27441电量计初始化实战:从SEALED解锁到SOC准确读取 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 4:01:10
从脑雾到第二大脑:My-Brain-Is-Full-Crew如何用8个AI代理拯救你的记忆 从脑雾到第二大脑:My-Brain-Is-Full-Crew如何用8个AI代理拯救你的记忆 【免费下载链接】My-Brain-Is-Full-Crew Built by a PhD whose memory was failing, whose diet was a mess, and whose anxiety had its own agenda. Most second brain tools ignore the fact… · 2026/9/25 4:01:10
B站视频接口批量抓取实战:视频列表与详情数据采集全指南 做内容运营和数据分析的人,迟早会遇到一个需求:批量拉取某个B站账号的视频列表和详情数据。可能是想把自己账号的投稿导出成表格做季度复盘,可能是想研究某个垂直领域头部UP主都在发什么选题,也可能是想给内部工具加一个稳定的数据… · 2026/9/25 4:00:57
GPU SIMT指令依赖检测:解锁CUDA性能瓶颈的核心技术 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 4:56:55
Navicat免安装版深度解析:依赖库、配置与MySQL连接排查指南 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 4:56:49
从能跑到敢上线:Agent Skill 质量三道门槛与测试上线全流程 1. 从"能跑"到"敢上线":Skill 质量的三道门槛写 Skill 这件事,门槛其实比大多数人想象的要低。一个SKILL.md加几个脚本,跑通一次 Demo,看起来就"成了"。但我自己踩过的坑告诉我:能跑通的… · 2026/9/25 4:56:49
HDFS基本操作本质:理解NameNode与DataNode协同机制 1. 为什么“HDFS基本操作”不是命令背诵,而是理解分布式文件系统的第一道门槛刚接触Hadoop生态时,我带过一批实习生,他们花两小时把hdfs dfs -ls /、-mkdir、-put这些命令抄在小本子上,信心满满地去跑第一个任务——结果卡在-put上… · 2026/9/25 4:56:49
中国移动H10G-13融合网关刷机攻略:晶晨S905L3芯片刷安卓9完整教程 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 4:56:49
节后康复学习日志:肩关节复合体与SOAP记录的7小时高效实践 春节回来第一周,我最怕的不是肠胃,是书桌。Day1坐在桌前两个小时,光是翻目录就翻了四十分钟,脑子里全是年夜饭的油香和亲戚家小孩的哭声。到了Day2,我干脆不跟生物钟较劲了,把这一天的康复学习定在12:30到2… · 2026/9/25 4:56:49
创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:31
MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:37