定义好韧性策略、给应用做过评估之后,团队通常会卡在下一步:怎么证明它真能扛住故障。手工设计故障注入实验门槛不低——要判断注哪种故障、打哪个资源、什么结果算成功。多数团队不知道从哪下手;就算做出来了,架构一演进,实验脚本很快就过期,跑出来的结论反而误导人。
AWS Resilience Hub 的推荐韧性测试(recommended resilience testing)就是冲着这个空档来的。它复用 Resilience Hub 已经掌握的信息——服务包含哪些资源、依赖关系、以及你定义的韧性策略——自动生成 FIS(Fault Injection Service)实验、注入故障、再拿结果对照成功判据和 RTO,直接给通过或不通过。每次运行自动出报告。原本要专家设计的实验,变成了开箱即用的测试。
四种测试各自打什么
**可用区恢复(Availability Zone: recovery)**:模拟单个可用区断电,同时影响该区内的计算、网络、存储和数据库资源。它验证三件事——服务能不能识别出故障区、能不能在健康区继续运行、能不能在 RTO 内回到健康状态。附带价值是暴露你可能不知道的单 AZ 依赖:平时看不出来,一断电就全挂。
**依赖校验(Dependency validation)**:这是客户呼声最高的一项。现代应用依赖几十个服务,弄清哪些依赖可以没有,是韧性的核心问题。测试会阻断区域内选定依赖的连通性,看服务是否还能正常工作。它既能确认软依赖缺失时服务优雅降级,也能把「你以为是软依赖、实际是硬依赖」的那些揪出来。文章建议先挑一个软依赖开始,再逐步扩大范围。
**多区域隔离(Multi-Region: isolation)**:阻断两个区域之间的连通,包括网络流量、跨区域数据复制和选定依赖,验证服务在没有对端区域时能否独立运行。active-active 和 active-passive 都适用,也可以作为多区域恢复测试的前置练习。
**多区域恢复(Multi-Region: recovery)**:在选定区域注入依赖故障,通过成功告警确认服务在恢复区域内、按 RTO 恢复并持续健康。注意恢复动作要你自己做——触发切流或执行 ARC 的 Region switch 计划,测试只负责注入故障和判定。

三层结构,判据分两类
每个测试都分三层:**test template** 是预置推荐,规定故障动作、目标资源类型和参数;**test** 是绑定到你具体服务的实例,包含依赖清单、时长、RTO 等配置;**test run** 是一次实际执行,按当前资源范围跑,产出通过与不通过、结果和报告。同一个测试可以按季度、按月或随时重跑。
判定标准按测试类型分两类,这个区分很关键:
- **恢复类**(AZ 恢复、多区域恢复):所有成功判据必须在策略定义的 RTO 内回到健康,并一直保持到测试结束。它验证的不只是「恢复了」,而是「恢复得足够快」。
- **持续类**(依赖校验、多区域隔离):所有成功告警从注入那一刻起直到测试结束都保持正常,证明整个故障期间服务都没掉下去。
把这两类混为一谈是常见错误:拿恢复类的 RTO 判据去衡量隔离测试,你会得到一堆无意义的失败。

实操细节
前置条件有两个:服务已在下一代 Resilience Hub 里创建并评估过;有一个供 Resilience Hub assume 的 IAM 服务角色(可在控制台新建,也可指定现有角色)。
依赖有两种定义方式。一是打开依赖发现:它基于 DNS 查询日志分析,回溯窗口 35 天,并持续轮询,自动识别服务调用的 AWS 服务、内部端点与第三方端点。这一步经常挖出意外的东西——没想到的跨区域调用、关键第三方依赖、平时访问很少但故障时会致命的服 务。二是手工填 DNS 端点。定义完之后建议逐个标注软/硬:软依赖缺失时服务降级但可用(分析 API、通知、开关、推荐引擎),测试应当通过;硬依赖缺失时服务会失败(主库、鉴权、凭证交换),测试可能不通过——这是预期结果,也是有信息量的结果。
配置在服务面板的 Testing 页,四张推荐测试卡片里选一张,进配置页按六段填。测试时长可设 1 分钟到 12 小时,默认 30 分钟;时长结束后还要几分钟评估结果才收尾。

小结
这套能力的意义在于把韧性验证从「专家手工艺」变成「可定期重跑的制度」:模板固化故障类型,测试实例绑定具体服务,运行结果直接对 RTO 判定。真正要投入判断的只剩两件事——依赖的软硬分类准不准,以及 RTO 定得是否现实。这两件想清楚了,剩下按季度跑一遍就行。

内容与图片版权归原作者所有 · 原文: https://aws.amazon.com/blogs/architecture/recommended-resilience-testing-in-the-next-generation-of-aws-resilience-hub/