AWS Fault Injection Simulator
通过混沌工程方法安全注入 EC2 停止、网络延迟等故障,验证系统容错能力的服务
概述
AWS Fault Injection Simulator (FIS) 是一项全托管服务,用于在 AWS 环境中安全实施混沌工程实验。可有意制造 EC2 实例停止、网络延迟注入、可用区故障模拟等生产环境中可能发生的故障,验证系统的恢复能力。在实验模板中定义操作、目标和停止条件,在受控环境中重现故障。通过与 CloudWatch 告警联动的停止条件,当实验产生意外影响时可自动停止。
实验模板与操作设计
AWS 用户指南的文档历史记录显示,服务名称已更新为 AWS Fault Injection Service (2023 年 11 月 15 日的条目)。FIS 的实验模板将注入的故障类型 (操作)、目标资源 (目标) 和安全装置 (停止条件) 整合为一个定义。操作包括 EC2 实例停止/重启、ECS 任务强制终止、RDS 故障转移触发、网络延迟/丢包注入、API 限流模拟等。可并行或顺序执行多个操作,构建如「先停止 30% 的 EC2 实例,5 分钟后注入网络延迟」的复合故障场景。操作持续时间通过参数指定,资源恢复原始状态的方式因操作而异,例如有在指定时间后启动已停止实例的参数。实验模板以 JSON/YAML 定义,可通过 CloudFormation 或 Terraform 进行代码管理。实验执行需要 IAM 角色,按操作以最小权限授予所需权限 (ec2:StopInstances、ecs:StopTask 等)。
目标选择与停止条件的安全控制
目标选择决定故障注入的范围。通过基于标签的过滤,可将故障注入限定在特定环境 (env:staging)、团队 (team:platform)、服务 (service:payment)。还可指定选中资源中受影响的比例 (如全体的 30%) 或资源数 (如最多 3 台),控制爆炸半径 (blast radius)。停止条件与 CloudWatch 告警联动,当错误率超过阈值或延迟超出容许范围时停止实验。可设置多个停止条件,任一触发即停止整个实验。在生产环境实验时,一种做法是逐步扩大范围。先以 1 台 EC2 实例为对象实验,无问题后逐步扩大到 10%、30%、50%。实验执行日志记录在 CloudTrail 中,保留谁在何时执行了哪个实验的审计轨迹。
实验结果分析与容错改进循环
FIS 的实验结果用于验证假设和导出改进措施。实验前建立假设如「Auto Scaling 组在 30% EC2 实例停止后 5 分钟内恢复」,实验后通过 CloudWatch 指标 (CPU 使用率、请求成功率、延迟) 验证假设。假设被否定时 (如恢复耗时 15 分钟),落实为具体改进措施如调整 Auto Scaling 冷却设置或健康检查间隔。将 FIS 实验嵌入 CI/CD 管道,可构建每次部署自动验证容错能力的机制。在 CodePipeline 阶段放置 FIS 实验,仅实验成功时才进入生产部署。费用根据操作处于活动状态的时长 (操作分钟) 和实验所含账户数按量计费,单价请参阅 AWS 官方定价页面 (截至 2026 年 10 月)。
参考资料(AWS 官方)
本页的第一手信息来源是 AWS 官方网站及官方文档。最新的规格与价格请以下列官方页面为准。
如本页内容与官方文档不一致,请以官方文档为准。