SuperAPI AI 工具集

aws-fault-injection-service

部署与运维

查看项目

更新于 10-14 20:50

技能介绍

用途

AWS Fault Injection Service(AWS FIS)是一项托管式混沌工程服务,可在真实 AWS 资源上运行受控的故障注入实验,以便观察应用如何应对中断并改进其韧性。本技能为智能体提供 FIS 领域专业知识,使其能够围绕故障注入实验提供建议、构建与运行支持,并解答相关概念问题。

主要能力

该技能让智能体可以完成三件事:

  1. 推荐合适的实验:将用户描述的故障场景或韧性疑问映射到正确的 FIS 动作、场景或实验设计,并解释其中的取舍。
  2. 构建并运行实验:编写实验模板(动作、目标、停止条件、日志、报告),配置实验 IAM 角色,并通过 CLI、SDK 或 CloudFormation 驱动运行、监控、停止的生命周期。
  3. 为用户提供信息:回答关于 FIS 术语、安全性、定价、支持的服务,以及 FIS 如何融入韧性计划的概念性问题。

使用方式

技能按请求类型进行路由:

  • 询问“FIS 是什么 / 何时使用 / 某术语含义 / 是否支持某功能” → 阅读 references/fis-concepts.md。
  • 询问“要测试某故障模式应运行什么实验或动作” → 阅读 references/fis-actions-reference.md(动作选择映射与完整目录),并建议动作或场景。
  • 要求“构建 / 创建 / 运行实验”(模板、目标、停止条件、日志、报告、场景、多账户、监控)→ 严格遵循 references/fis-workflow.md。
  • 任何 FIS 的 AWS CLI 或 API 命令 → 先查阅 references/fis-api-reference.md,它是操作与参数的权威参考,并包含幻觉拒绝表。
  • IAM 角色、权限、信任策略、混淆代理、爆炸半径安全 → 阅读 references/fis-security.md。

关于技能自身参考文件的位置:若通过 AWS MCP 的 retrieve_skill 工具加载,参考文件不在本地文件系统,需通过 retrieve_skill 的 file 参数获取(例如 file="references/fis-concepts.md"),不要本地读取或搜索文件系统;若本地安装(如 .kiro/skills/aws-fault-injection-service/ 或 ~/.claude/skills/aws-fault-injection-service/),则按相对路径从本地技能目录读取。此规则仅适用于技能自身的参考文件;用户或会话数据始终在工作目录中读写,绝不通过 retrieve_skill。

推荐使用 AWS MCP 服务器执行本技能的 AWS API 调用,因为它提供沙箱执行与审计日志,但并非必需;所有操作也可直接使用 AWS CLI(aws fis ...)。

推荐实验的行为约定

当用户描述想要测试的故障而非想要运行的命令时:

  1. 识别故障模式(可用区受损、区域隔离、API 错误/限流、计算/数据库/缓存丢失、延迟、丢包、资源耗尽)。
  2. 使用 references/fis-actions-reference.md 中的选择映射,将其映射到场景(若有匹配则优先,场景为预构建且由 AWS 拥有)或具体动作。
  3. 说明目标(资源类型及如何限定范围)和停止条件(基于稳态指标的 CloudWatch 告警),以限制爆炸半径。
  4. 建议先在预生产环境运行,然后在变更管理下于生产环境运行。
  5. 提出生成实验模板,然后遵循 references/fis-workflow.md。

不要编造动作 ID、资源类型或参数。若不确定,应说明并借助 aws fis list-actions / aws fis get-action 或 FIS 文档进行核实。动作 ID 和资源类型会演进,应通过 aws fis list-actions 和 aws fis get-action --id <action-id> 验证,而非依赖记忆。

适用场景

  • 需要验证应用在可用区故障、区域隔离、API 错误或限流、计算/数据库/缓存丢失、延迟、丢包、资源耗尽等中断下的韧性。
  • 需要设计、编写并运行 FIS 实验模板,配置目标、停止条件、日志与报告。
  • 需要了解 FIS 的术语、安全性、定价、支持服务及其在韧性计划中的定位。
  • 需要排查实验失败、权限错误、意外停止、Nitro/实例类型错误等问题。

限制与安全注意事项

AWS FIS 会对真实 AWS 资源执行真实操作。在生产环境运行任何实验前,应先规划、先在预生产环境运行,并始终用停止条件限制爆炸半径。应将故障注入视为高权限且可能造成中断的操作。

安全要点(完整指南见 references/fis-security.md):

  • 最小权限:将实验角色限定为每个实验所需的动作和目标 ARN,绝不使用 *。限定允许调用 fis:StartExperiment 的人类/CI 主体。
  • 混淆代理防护:实验角色的信任策略必须对 aws:SourceAccount 和 aws:SourceArn(限定到实验 ARN 模式)设置条件。
  • 限制爆炸半径:始终附加 CloudWatch 告警停止条件;从窄目标(COUNT(1) / 低 PERCENT)和预生产环境开始,再到生产环境。
  • 字符串字段中不得含敏感数据:实验/模板描述、标签和日志会出现在 CloudTrail、CloudWatch Logs、S3 报告以及(多账户)目标账户 Health 仪表板中——绝不嵌入 PII、密钥或敏感架构细节。
  • 加密日志/报告:实验日志和 PDF 报告会暴露韧性态势——对 S3 存储桶使用 SSE-KMS,强制 TLS,并考虑在报告存储桶上使用 S3 Object Lock。

故障排查

  • 实验立即失败 / 未找到目标:FIS 在实验开始时解析所有目标;若某目标解析为零个资源,实验会失败(除非 emptyTargetResolutionMode 为 skip)。检查标签、过滤器、区域和账户。运行前使用目标预览。
  • 动作因权限错误失败:FIS 实验 IAM 角色缺少底层服务 API(或 SSM)的权限,或混淆代理信任条件阻止了代入。参见 references/fis-security.md。
  • 实验意外停止:很可能是停止条件(CloudWatch 告警)触发——这是护栏在起作用。检查实验的 state.reason 和告警历史。已停止的实验无法恢复;需从模板启动新实验。
  • EBS 或网络故障出现 Nitro / 实例类型错误:某些动作需要基于 Nitro 的实例或 SSM Agent。按动作在 references/fis-actions-reference.md 中核实先决条件。

可观测性配套

对于支撑 FIS 停止条件和实验报告的 CloudWatch 告警、仪表板和指标,建议使用 AWS Observability 技能进行告警/仪表板设置——本技能仅关注这些信号如何服务于实验安全与实验后分析。

延伸阅读

FIS Security 与 AWS Well-Architected Reliability Pillar。