ronmark1/devops-agent-incident-response
GitHub: ronmark1/devops-agent-incident-response
将 CloudWatch 告警端到端转化为由 AI 调查、聊天审批和 SSM 自动修复组成的事件响应流水线,无需数据库即可运行。
Stars: 0 | Forks: 0
# 自动化事件响应 — AWS DevOps Agent → RingCentral → Freshservice
一个 serverless pipeline,可将 CloudWatch 告警转化为一个自主调查、人工审批、自动修复的事件——实现端到端流程,且在聊天中仅需一张审批卡。
当告警触发时,系统会打开一个 Freshservice 工单,触发 **AWS DevOps Agent** 调查,等待真实的根因分析,要求 Agent 生成缓解计划,并将**一张整合后的 Adaptive Card** 发布到 **RingCentral Glip**,其中包含根因、建议的缓解方案以及“批准/拒绝”按钮。批准后,它会运行 **SSM Automation runbook** 进行修复,然后结单该工单。
## 架构
```
flowchart TD
A[CloudWatch Alarm] -->|SNS| B[Lambda: findings-handler]
B --> C[Create Freshservice ticket]
B --> D[Trigger DevOps Agent investigation
HMAC-signed webhook] D -.->|investigates autonomously| E((AWS DevOps Agent)) E -->|EventBridge: Investigation Completed| B B --> F[Trigger mitigation generation
chat API] F -.-> E E -->|EventBridge: Mitigation Completed| B B --> G[Post ONE Adaptive Card to RingCentral Glip
root cause + mitigation + Approve/Reject] B --> H[Add findings + plan to ticket] G -->|Approve click → signed, single-use, expiring link| B B --> I[Run SSM Automation runbook
Diagnose / Reboot / Restart / Refresh] I --> J[Resolve Freshservice ticket] ``` ## 演示内容 - **事件驱动的 serverless 设计** — 单个 Lambda 跨 SNS、EventBridge 生命周期事件和公共 Function URL 进行分发,所有状态均存储在 SSM Parameter Store 中(无需数据库)。 - **第三方 AI Agent 集成** — 通过 HMAC 签名的 webhook、journal 记录读取和流式 chat API 触发 AWS DevOps Agent 并检索其结果。 - **人在回路 (Human-in-the-loop) 自动化** — 基于聊天的审批机制来把控真实的基础设施操作,并配备安全护栏。 - **安全设计 (Secure-by-design)** — 密钥存储在 Secrets Manager 中(绝不放在代码中),HMAC 签名的审批链接为一次性且具时效性,遵循最小权限原则的 IAM,以及针对破坏性操作的可选资源标签护栏。 ## 解决的工程挑战 - **HMAC webhook 签名** — 除非签名是针对 `"{ISO-8601-timestamp-with-real-ms}:{body}"` 计算得出的,否则 DevOps Agent 会拒绝请求;准确获取毫秒格式正是返回 200 和 403 的区别所在。 - **两阶段缓解方案检索** — 缓解方案*不是*自动生成的;它是一个可选步骤。pipeline 在 `Investigation Completed` 时通过 Agent 的 chat API 触发生成,然后在 `Mitigation Completed` 时获取该计划,并解码流式 `contentBlockDelta` 事件流。 - **单一整合卡片** — 由于 chat webhook 无法编辑之前的消息,因此卡片会被推迟到缓解方案准备就绪后才发送,这样整个事件就只会精准地发送到一条通知中。 - **一次性、时效性审批** — 审批链接带有已签名的有效期,并通过 SSM `Overwrite=false` 的比较并设置 (compare-and-set) 操作进行原子性认领,因此链接无法运行两次 runbook 或在过期后运行。 - **默认安全的修复映射** — 审批人可以选择从缓解文本中解析出的特定操作(重启 / restart / 刷新),但前提是同时找到了操作动词和具体目标且不存在否定词;否则,它将回退到只读的 Diagnose 模式。 ## 技术栈 AWS Lambda · SNS · EventBridge · SSM Automation · Secrets Manager · CloudFormation / SAM · AWS DevOps Agent · RingCentral Glip · Freshservice · Python(仅限 stdlib + boto3)。 ## 部署 有关完整的部署、参数、测试以及 SMC-vs-Kiro 修复说明,请参阅 [README.md](./README.md)。简而言之: ``` cp parameters.example.json parameters.json # fill in your endpoints/keys ./deploy.sh my-stack-name ``` ## 注意事项 这是基于真实 AWS 账户构建和验证的。任何示例中显示的凭证均为占位符;真实的密钥仅存在于被 gitignore 忽略的 `parameters.json` 文件和 AWS Secrets Manager 中。修复默认为只读的 Diagnose 模式;启用真实操作是经过深思熟虑且设有护栏的可选行为。
HMAC-signed webhook] D -.->|investigates autonomously| E((AWS DevOps Agent)) E -->|EventBridge: Investigation Completed| B B --> F[Trigger mitigation generation
chat API] F -.-> E E -->|EventBridge: Mitigation Completed| B B --> G[Post ONE Adaptive Card to RingCentral Glip
root cause + mitigation + Approve/Reject] B --> H[Add findings + plan to ticket] G -->|Approve click → signed, single-use, expiring link| B B --> I[Run SSM Automation runbook
Diagnose / Reboot / Restart / Refresh] I --> J[Resolve Freshservice ticket] ``` ## 演示内容 - **事件驱动的 serverless 设计** — 单个 Lambda 跨 SNS、EventBridge 生命周期事件和公共 Function URL 进行分发,所有状态均存储在 SSM Parameter Store 中(无需数据库)。 - **第三方 AI Agent 集成** — 通过 HMAC 签名的 webhook、journal 记录读取和流式 chat API 触发 AWS DevOps Agent 并检索其结果。 - **人在回路 (Human-in-the-loop) 自动化** — 基于聊天的审批机制来把控真实的基础设施操作,并配备安全护栏。 - **安全设计 (Secure-by-design)** — 密钥存储在 Secrets Manager 中(绝不放在代码中),HMAC 签名的审批链接为一次性且具时效性,遵循最小权限原则的 IAM,以及针对破坏性操作的可选资源标签护栏。 ## 解决的工程挑战 - **HMAC webhook 签名** — 除非签名是针对 `"{ISO-8601-timestamp-with-real-ms}:{body}"` 计算得出的,否则 DevOps Agent 会拒绝请求;准确获取毫秒格式正是返回 200 和 403 的区别所在。 - **两阶段缓解方案检索** — 缓解方案*不是*自动生成的;它是一个可选步骤。pipeline 在 `Investigation Completed` 时通过 Agent 的 chat API 触发生成,然后在 `Mitigation Completed` 时获取该计划,并解码流式 `contentBlockDelta` 事件流。 - **单一整合卡片** — 由于 chat webhook 无法编辑之前的消息,因此卡片会被推迟到缓解方案准备就绪后才发送,这样整个事件就只会精准地发送到一条通知中。 - **一次性、时效性审批** — 审批链接带有已签名的有效期,并通过 SSM `Overwrite=false` 的比较并设置 (compare-and-set) 操作进行原子性认领,因此链接无法运行两次 runbook 或在过期后运行。 - **默认安全的修复映射** — 审批人可以选择从缓解文本中解析出的特定操作(重启 / restart / 刷新),但前提是同时找到了操作动词和具体目标且不存在否定词;否则,它将回退到只读的 Diagnose 模式。 ## 技术栈 AWS Lambda · SNS · EventBridge · SSM Automation · Secrets Manager · CloudFormation / SAM · AWS DevOps Agent · RingCentral Glip · Freshservice · Python(仅限 stdlib + boto3)。 ## 部署 有关完整的部署、参数、测试以及 SMC-vs-Kiro 修复说明,请参阅 [README.md](./README.md)。简而言之: ``` cp parameters.example.json parameters.json # fill in your endpoints/keys ./deploy.sh my-stack-name ``` ## 注意事项 这是基于真实 AWS 账户构建和验证的。任何示例中显示的凭证均为占位符;真实的密钥仅存在于被 gitignore 忽略的 `parameters.json` 文件和 AWS Secrets Manager 中。修复默认为只读的 Diagnose 模式;启用真实操作是经过深思熟虑且设有护栏的可选行为。
标签:AWS, DPI, IT工单系统, 事件驱动, 自动化响应, 运维自动化, 逆向工具