拓十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

MiniStack内部API完全手册:health、reset、config三大端点让CI测试快人一步

MiniStack内部API完全手册:health、reset、config三大端点让CI测试快人一步 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),仅供参考
返回列表