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 限流,驗證其自動擴容策略是否及時有效。