运行时依赖
安装命令
点击复制本土化适配说明
Aws Fis Experiment Execute — AWS FIS 实验执行 安装说明: 安装命令:["openclaw skills install aws-fis-experiment-execute"]
技能文档
AWS FIS 实验执行 验证基础设施已经部署,运行 AWS FIS 实验,监控其进度,并生成结果报告。从准备好的实验目录读取配置,该目录的 CloudFormation 堆栈已经部署。 输出语言规则 检测用户对话的语言,并使用相同的语言进行所有输出。 中文输入 -> 中文输出 英文输入 -> 英文输出 先决条件 所需工具: AWS CLI — aws fis、aws cloudwatch、aws cloudformation、aws logs kubectl — 配置为访问目标 EKS 集群 准备好的实验目录(来自 aws-fis-experiment-prepare 技能) 该实验的 CloudFormation 堆栈必须已经部署 所需子技能: app-service-log-analysis 必须安装。 在运行时加载,用于应用程序发现、日志收集和分析。 没有它,实验仍然可以运行,但日志分析将被跳过。 工作流程 digraph execute_flow { "用户输入:\n路径或模板 ID?" [shape=diamond]; "搜索 CWD 中的\n匹配目录" [shape=box]; "目录找到?" [shape=diamond]; "询问用户全路径" [shape=box, style=bold]; "验证文件" [shape=box]; "从 README 中读取堆栈名称" [shape=box]; "检查 CFN 堆栈状态" [shape=diamond]; "从输出中提取模板 ID" [shape=box]; "显示 actionIds" [shape=box]; "实验前健康检查" [shape=box, color=blue]; "所有资源健康?" [shape=diamond]; "等待 / 提示用户" [shape=box]; "发现应用程序 + 启动日志\n(app-service-log-analysis)" [shape=box]; "用户确认实验开始" [shape=diamond, style=bold, color=red]; "开始实验" [shape=box]; "监控实验\n+ 日志洞察" [shape=box]; "实验完成?" [shape=diamond]; "等待 3 分钟后 baseline" [shape=box]; "停止日志 + 分析\n(app-service-log-analysis)" [shape=box]; "生成结果报告" [shape=box]; "用户输入:\n路径或模板 ID?" -> "验证文件" [label="全路径"]; "用户输入:\n路径或模板 ID?" -> "搜索 CWD 中的\n匹配目录" [label="模板 ID"]; "搜索 CWD 中的\n匹配目录" -> "目录找到?"; "目录找到?" -> "验证文件" [label="是 (1 个匹配)"]; "目录找到?" -> "询问用户全路径" [label="无匹配"]; "询问用户全路径" -> "验证文件" [label="用户提供路径"]; "验证文件" -> "从 README 中读取堆栈名称"; "从 README 中读取堆栈名称" -> "检查 CFN 堆栈状态"; "检查 CFN 堆栈状态" -> "从输出中提取模板 ID" [label="CREATE_COMPLETE"]; "检查 CFN 堆栈状态" -> "生成结果报告" [label="未部署 / 失败,中止"]; "从输出中提取模板 ID" -> "显示 actionIds"; "显示 actionIds" -> "实验前健康检查"; "实验前健康检查" -> "所有资源健康?"; "所有资源健康?" -> "发现应用程序 + 启动日志\n(app-service-log-analysis)" [label="是"]; "所有资源健康?" -> "等待 / 提示用户" [label="否"]; "等待 / 提示用户" -> "实验前健康检查" [label="重试 (轮询 60s,\n最大 10 分钟非交互)"]; "等待 / 提示用户" -> "发现应用程序 + 启动日志\n(app-service-log-analysis)" [label="用户覆盖"]; "等待 / 提示用户" -> "生成结果报告" [label="中止"]; "发现应用程序 + 启动日志\n(app-service-log-analysis)" -> "用户确认实验开始"; "用户确认实验开始" -> "开始实验" [label="是,我确认"]; "用户确认实验开始" -> "停止日志 + 分析\n(app-service-log-analysis)" [label="否,中止"]; "开始实验" -> "监控实验\n+ 日志洞察"; "监控实验\n+ 日志洞察" -> "实验完成?"; "实验完成?" -> "监控实验\n+ 日志洞察" [label="否,轮询再次"]; "实验完成?" -> "等待 3 分钟后 baseline" [label="是"]; "等待 3 分钟后 baseline" -> "停止日志 + 分析\n(app-service-log-analysis)"; "停止日志 + 分析\n(app-service-log-analysis)" -> "生成结果报告"; } 步骤 1:解析和验证实验目录 用户提供以下内容: (a)实验目录的全路径,或者 (b)FIS 实验模板 ID(例如,EXT1a2b3c4d5e6f7) 步骤 1a:从模板 ID 解析目录 如果用户提供模板 ID,则在 CWD 中搜索以该 ID 结尾的目录: find . -maxdepth 1 -type d -name "*${TEMPLATE_ID_INPUT}" 2>/dev/null 1 个匹配项 -> 使用它并通知用户 多个匹配项 -> 列出并询问用户选择 无匹配项 -> 询问用户全路径。 不要在没有有效路径的情况下继续。 步骤 1b:从目录名称中提取模板 ID 实验目录名称以模板 ID 结尾(例如,2026-04-11-az-power-int-my-cluster-EXT1a2b3c4d5e6f7)。 提取它: TEMPLATE_ID=$(basename "${EXPERIMENT_DIR}" | grep -oE 'EXT[a-zA-Z0-9]+$') 将其存储为 TEMPLATE_ID。