AWS Fault Injection Service (FIS) 的命名直观体现了其核心用途——通过“注入故障”(Fault Injection)来测试系统的健壮性。“Fault”指代系统可能遭遇的异常或中断,“Injection”强调主动引入这些异常的操作,而“Service”表明其作为 AWS 托管服务的属性。该名称延续了 AWS 工具命名的简洁风格(如 EC2、S3),同时突出其“实验性”特质——允许用户在受控环境中模拟真实世界的故障场景(如实例终止、网络延迟、API 限流),从而验证系统在压力下的表现。FIS 的命名也暗示了其与“混沌工程”(Chaos Engineering)的关联,后者通过主动制造故障来提升系统的容错能力,而 FIS 正是 AWS 为此提供的标准化工具。
AWS 故障注入服务的核心功能是提供可控的故障模拟环境,FIS 简化了跨一系列 AWS 服务来设置和运行受控故障注入实验的过程,并且支持用户定义并执行复杂的故障实验。
其主要能力包括,
多类型故障注入:支持模拟 EC2 实例终止、EBS 卷分离、网络丢包 / 延迟、API 调用失败(如模拟 AWS 服务限流)等,覆盖计算、存储、网络和服务调用全维度。
目标化实验设计:允许用户指定实验范围(如特定 VPC 内的实例、特定 Lambda 函数),并设置故障持续时间、影响比例(如仅对 50% 的请求注入延迟)。
自动化与集成:可通过 AWS CLI、SDK 或 CloudFormation 模板编排实验,并与 CloudWatch 监控指标联动,实时观察系统响应。
安全回滚机制:实验结束后自动清理故障状态,确保系统恢复至正常状态,避免残留配置影响生产环境。
FIS 通过模板化实验设计与动态执行引擎实现故障注入。用户首先在 FIS 控制台或通过基础设施即代码(IaC)工具(如 AWS CloudFormation)定义实验模板,指定故障类型(如“终止 EC2 实例”)、目标资源(如特定 Auto Scaling 组中的实例)、触发条件(如时间计划或 CloudWatch 警报)及监控指标(如 CPU 利用率、错误率)。实验执行时,FIS 服务会动态调用 AWS API(如终止 EC2 实例的 TerminateInstance 接口)或模拟网络层故障(如通过 VPC 流量镜像注入延迟),同时持续采集 CloudWatch 指标以评估系统影响。实验完成后,FIS 生成详细报告,包括故障触发时间、系统恢复速度及关键指标变化趋势,帮助用户分析系统容错能力。
FIS 的典型应用场景聚焦于系统韧性验证与容灾能力优化,主要包括,
高可用性测试:模拟区域级故障(如强制终止某可用区的 EC2 实例),验证多 AZ 部署的应用是否能自动切换流量并维持服务连续性。
性能瓶颈定位:通过注入 API 限流或数据库连接失败,观察系统是否触发降级策略(如返回缓存数据),避免级联故障。
成本与性能平衡:在可控环境中测试“优雅降级”逻辑(如非核心功能在资源紧张时自动关闭),优化资源分配策略。
合规性验证:满足行业监管要求(如金融系统需证明在部分节点故障时仍能保持交易完整性),通过 FIS 实验提供审计证据。例如,某电商公司使用 FIS 模拟 Black Friday 流量激增时的 API 限流,验证其自动扩容策略是否及时有效。