摘要:随着企业在 AWS 上的工作负载日益复杂——EC2 集群、RDS 数据库、ECS/EKS 容器、Lambda 函数、网络与负载均衡等多种服务交织运行——运维团队面临严峻挑战。AWS DevOps Agent 正是为解决这些运维痛点而生。它是一个 AI 驱动的自主运维代理,能够自动接收来自任何 AWS 服务的告警、跨服务关联数据(CloudWatch 指标、CloudTrail 事件、AWS Config 变更、VPC 网络日志等)、执行深度根因分析,并生成结构化的调查报告——整个过程无需人工干预。
1. 背景与痛点
随着企业在 AWS 上的工作负载日益复杂——EC2 集群、RDS 数据库、ECS/EKS 容器、Lambda 函数、网络与负载均衡等多种服务交织运行——运维团队面临严峻挑战:
- 告警爆炸:CloudWatch、第三方监控(Datadog、PagerDuty、Grafana 等)每天产生数百条告警,涉及 CPU、内存、磁盘、网络、错误率等数十种指标,运维团队疲于应对
- 跨服务关联困难:一个故障追溯可能需要人工从 CloudWatch 指标、CloudTrail 操作记录、VPC Flow Logs、Config 变更中逐一关联,效率极低
- 响应延迟:从告警触发到定位根因,往往需要 30 分钟到数小时,甚至更久。对于生产环境的 P1 故障,每分钟的延误都意味着业务损失
- 知识难以沉淀:资深工程师的排查经验分散在个人脑海和零散的 runbook 中,团队扩张时知识传递成本高
- 多环境多区域管理:跨 Region、跨账户的故障排查更加复杂,单靠人工难以全面覆盖
AWS DevOps Agent 正是为解决这些运维痛点而生。它是一个 AI 驱动的自主运维代理,能够自动接收来自任何 AWS 服务的告警、跨服务关联数据(CloudWatch 指标、CloudTrail 事件、AWS Config 变更、VPC 网络日志等)、执行深度根因分析,并生成结构化的调查报告——整个过程无需人工干预。
2. AWS DevOps Agent 产品介绍
AWS DevOps Agent 于 2025 年 12 月 re:Invent 大会发布公开预览版(Public Preview),并于 2026 年 3 月 31 日正式 GA。它是一款 AI 驱动的自主运维服务,内置了对 AWS 全栈服务的深度理解,能够像一位资深 SRE 工程师一样,自动接收告警、主动收集证据、跨服务关联分析,并输出结构化的根因分析报告。GA 版本还新增了对 Azure 云环境和本地基础设施的支持。
2.1 核心能力
- 全栈服务分析 — Agent 自动构建应用拓扑(Application Topology),动态发现并映射 AWS 账户中的资源及其依赖关系。无需预先指定服务列表,Agent 能自动调用相关 AWS API 收集指标、日志和配置信息。GA 版本还支持 Azure 和本地环境(通过 MCP)
- AI 自主调查 — 接收告警后 Agent 自主决定调查策略——先查什么、再查什么、如何关联——无需预定义 runbook。调查范围涵盖 CloudWatch 指标与日志、CloudTrail 操作记录、代码仓库、CI/CD 流水线数据、部署历史等
- 深度根因分析 — 不仅识别”发生了什么”,更能分析”为什么发生”——从表面症状追溯到根因,给出修复建议。例如:CPU 飙升 → 分析进程行为 → 追踪到 SSM 会话中的异常工作负载 → 建议升级实例类型
- 结构化输出 — 调查结果以 Markdown 格式的 Journal Records 保存,包含症状(Symptom)、发现(Finding)、观测数据(Observation)、调查缺口(Gap)和最终摘要(Summary),便于归档和审计
- 事件驱动集成 — 调查生命周期通过 EventBridge 发布事件(Investigation Created / Priority Updated / In Progress / Completed / Failed、Mitigation In Progress / Cancelled),可与任何下游系统无缝对接
- 丰富的第三方集成 — 原生支持 Datadog、Dynatrace、New Relic、Splunk、Grafana(可观测性)、PagerDuty、ServiceNow(事件管理)、GitHub、GitLab、Azure DevOps(代码/CI-CD)、Slack(通知)。还可通过 MCP 协议对接自定义工具
- 安全与合规 — Agent 通过 IAM 角色(服务主体
aidevops.amazonaws.com)调用 AWS API,所有操作可通过 CloudTrail 审计;调查记录持久保存,满足合规要求
2.2 多种触发方式
- Backlog Task(
create_backlog_task)— 异步模式,Agent 自主调查,通过 EventBridge 通知完成。适用于自动化运维流水线、CloudWatch / 自定义告警触发
- Chat(
create_chat + send_message)— 同步流式响应,支持多轮对话,Agent 实时调用 AWS API。适用于交互式排查、实时问答、On-Call 辅助
- Webhook(第三方 POST 到 webhook URL)— Agent 自动接收并智能判断是否需要调查。适用于对接 PagerDuty、Datadog、Grafana、GitLab 等
[图1] |
3. Demo 方案架构
本文以 EC2 CPU 告警 作为演示场景,展示完整的事件驱动架构。同一架构模式可直接适用于上述所有场景——只需调整 EventBridge Rule 的事件匹配模式和 Lambda-A 中的告警解析逻辑即可。该架构具有通用性——将 CloudWatch Alarm 替换为任意 AWS 服务的告警源(RDS、Lambda、ECS 等),即可复用同一套事件驱动流水线。
3.1 架构图
[图2] |
3.2 数据流(8 步)
- EC2 CPU 飙升 —
stress --cpu 4 模拟高负载
- CloudWatch Alarm 触发 — CPU > 80% 持续 2 个评估周期,状态 OK → ALARM
- EventBridge Rule-1 匹配 — 捕获
aws.cloudwatch / CloudWatch Alarm State Change 事件
- Lambda-A 触发调查 — 调用
create_backlog_task(taskType='INVESTIGATION')
- DevOps Agent 自主调查 — 分析 CloudWatch 指标、CloudTrail 事件、EC2 配置(5~15 分钟)
- 调查完成事件 — DevOps Agent 发布
aws.aidevops / Investigation Completed 事件
- Lambda-B 获取结果 — 调用
list_journal_records(),提取 investigation_summary_md 记录
- 飞书通知 — 将 Markdown 格式的调查摘要发送到飞书群
3.3 Investigation Completed 事件格式
当调查完成时,DevOps Agent 自动向 EventBridge 默认总线发布以下事件:
{
"source": "aws.aidevops",
"detail-type": "Investigation Completed",
"detail": {
"version": "1.0.0",
"metadata": {
"agent_space_id": "f95eb69d-46e2-48c9-875f-07536fd3b4b2",
"task_id": "3bb4e347-e040-417c-ac57-b2ce0f2fe3b4",
"execution_id": "exe-ops1-f5998e4d-4a48-442b-92f8-cadc22d8303f"
},
"data": {
"task_type": "INVESTIGATION",
"priority": "HIGH",
"status": "COMPLETED",
"created_at": "2026-04-07T04:58:05.356Z",
"updated_at": "2026-04-07T05:04:47.756Z",
"summary_record_id": "f9072676-5b46-4139-afae-3d7a3762bac9"
}
}
}
ℹ️ 注意:
事件源是 aws.aidevops(不是 aws.devops-agent),IAM action 前缀也是 aidevops。
4. 部署步骤
4.1 环境变量配置
export AWS_ACCOUNT_ID="<YOUR_AWS_ACCOUNT_ID>"
export AWS_REGION="us-west-2"
export EC2_INSTANCE_ID="<YOUR_EC2_INSTANCE_ID>"
export DEVOPS_AGENT_SPACE_ID="<YOUR_AGENT_SPACE_ID>"
export FEISHU_APP_ID="<YOUR_FEISHU_APP_ID>"
export FEISHU_APP_SECRET="<YOUR_FEISHU_APP_SECRET>"
export FEISHU_CHAT_ID="<YOUR_FEISHU_CHAT_ID>"
4.2 IAM 角色与权限
创建 Lambda 执行角色,并添加 DevOps Agent 权限:
# 创建角色
aws iam create-role \
--role-name DevOpsAgentDemoLambdaRole \
--assume-role-policy-document file://iam/lambda-role-trust.json
# 添加基础执行权限
aws iam attach-role-policy \
--role-name DevOpsAgentDemoLambdaRole \
--policy-arn arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole
# 添加 DevOps Agent 权限(注意前缀是 aidevops)
aws iam put-role-policy \
--role-name DevOpsAgentDemoLambdaRole \
--policy-name DevOpsAgentAccess \
--policy-document '{
"Version": "2012-10-17",
"Statement": [{
"Effect": "Allow",
"Action": [
"aidevops:CreateBacklogTask",
"aidevops:ListJournalRecords"
],
"Resource": "*"
}]
}'
4.3 Lambda Layer(最新 boto3)
⚠️ 重要:
Lambda 运行时内置的 boto3 不包含 devops-agent 服务,必须通过 Layer 提供最新版本。
mkdir -p /tmp/boto3-layer/python
pip install boto3 -t /tmp/boto3-layer/python --upgradecd /tmp/boto3-layer && zip -r /tmp/boto3-layer.zip python/
aws lambda publish-layer-version \
--layer-name boto3-latest \
--zip-file fileb:///tmp/boto3-layer.zip \
--compatible-runtimes python3.12
4.4 部署两个 Lambda 函数
Lambda-A(触发调查):
aws lambda create-function \
--function-name devops-agent-trigger-investigation \
--runtime python3.12 \
--handler lambda_a.lambda_handler \
--role "arn:aws:iam::${AWS_ACCOUNT_ID}:role/DevOpsAgentDemoLambdaRole" \
--zip-file fileb://lambda/lambda_a.zip \
--timeout 30 --memory-size 128 \
--layers "${LAYER_ARN}" \
--environment "Variables={DEVOPS_AGENT_SPACE_ID=${DEVOPS_AGENT_SPACE_ID}}"
Lambda-A 关键代码:收到 CloudWatch Alarm 事件后,提取告警详情并调用 DevOps Agent API 创建调查任务。
import json
import os
import boto3
DEVOPS_AGENT_SPACE_ID = os.environ["DEVOPS_AGENT_SPACE_ID"]
def lambda_handler(event, context):
detail = event.get("detail", {})
state_value = detail.get("state", {}).get("value", "")
# 仅在 ALARM 状态时触发调查
if state_value != "ALARM":
return {"statusCode": 200, "body": f"Skipped: state={state_value}"}
# 提取告警信息
alarm_name = detail.get("alarmName", "Unknown")
reason = detail.get("state", {}).get("reason", "N/A")
metrics = detail.get("configuration", {}).get("metrics", [])
instance_id = ""
if metrics:
dims = metrics[0].get("metricStat", {}).get("metric", {}).get("dimensions", {})
instance_id = dims.get("InstanceId", "")
# 调用 DevOps Agent 创建调查任务
client = boto3.client("devops-agent", region_name=os.environ.get("AWS_REGION", "us-west-2"))
response = client.create_backlog_task(
agentSpaceId=DEVOPS_AGENT_SPACE_ID,
taskType="INVESTIGATION", # 任务类型:调查
title=f"Investigate: {alarm_name} - {instance_id}",
priority="HIGH", # 优先级
description=f"CloudWatch Alarm '{alarm_name}' triggered.\n"
f"EC2 Instance: {instance_id}\n"
f"Reason: {reason}\n"
f"Please investigate the root cause.",
)
task = response["task"]
# 返回 taskId 和 executionId,调查已异步启动
return {"statusCode": 200, "body": json.dumps({
"taskId": task["taskId"],
"executionId": task["executionId"],
"status": task["status"], # PENDING_START
})}
Lambda-B(获取结果 + 飞书通知):
aws lambda create-function \
--function-name devops-agent-notify-feishu \
--runtime python3.12 \
--handler lambda_b.lambda_handler \
--role "arn:aws:iam::${AWS_ACCOUNT_ID}:role/DevOpsAgentDemoLambdaRole" \
--zip-file fileb://lambda/lambda_b.zip \
--timeout 60 --memory-size 128 \
--layers "${LAYER_ARN}" \
--environment "Variables={DEVOPS_AGENT_SPACE_ID=${DEVOPS_AGENT_SPACE_ID},FEISHU_APP_ID=${FEISHU_APP_ID},FEISHU_APP_SECRET=${FEISHU_APP_SECRET},FEISHU_CHAT_ID=${FEISHU_CHAT_ID}}"
Lambda-B 关键代码:收到 Investigation Completed 事件后,调用 list_journal_records 获取调查摘要:
def get_investigation_summary(agent_space_id, execution_id):
"""从 DevOps Agent 获取调查摘要"""
client = boto3.client("devops-agent", region_name="us-west-2")
response = client.list_journal_records(
agentSpaceId=agent_space_id,
executionId=execution_id,
)
# 在 records 中找 investigation_summary_md 类型(Markdown 格式)
for record in response.get("records", []):
if record.get("recordType") == "investigation_summary_md":
return record.get("content", "")
return "No investigation summary available."
def lambda_handler(event, context):
detail = event.get("detail", {})
metadata = detail.get("metadata", {})
agent_space_id = metadata["agent_space_id"]
execution_id = metadata["execution_id"]
# 获取调查摘要
summary = get_investigation_summary(agent_space_id, execution_id)
# 发送飞书通知(富文本消息)
token = get_tenant_access_token()
send_feishu_message(token, FEISHU_CHAT_ID, "post", {
"zh_cn": {
"title": "DevOps Agent Investigation Completed",
"content": [
[{"tag": "text", "text": f"Task: {metadata['task_id']}"}],
[{"tag": "text", "text": summary}],
]
}
})
要点:list_journal_records 返回多种类型的记录,其中 investigation_summary_md 是 Markdown 格式的完整调查摘要,可直接用于通知展示。
4.5 Journal Record 类型一览
investigation_summary_md — 完整调查摘要(Markdown 格式)
investigation_summary — 结构化调查摘要(JSON 格式)
symptom — 发现的症状
finding — 调查发现(含根因)
observation — 观测数据
investigation_gap — 调查中的信息缺口
message — Agent 的对话消息
4.5 EventBridge 规则
Rule-1:CloudWatch Alarm → Lambda-A
aws events put-rule \
--name "DevOps-Agent-Demo-Alarm-To-Lambda" \
--event-pattern '{
"source": ["aws.cloudwatch"],
"detail-type": ["CloudWatch Alarm State Change"],
"detail": { "alarmName": ["DevOps-Agent-Demo-CPU-High"] }
}'
aws events put-targets \
--rule "DevOps-Agent-Demo-Alarm-To-Lambda" \
--targets "Id=trigger-investigation,Arn=arn:aws:lambda:${AWS_REGION}:${AWS_ACCOUNT_ID}:function:devops-agent-trigger-investigation"
Rule-2:Investigation Completed → Lambda-B
aws events put-rule \
--name "DevOps-Agent-Investigation-Completed" \
--event-pattern '{
"source": ["aws.aidevops"],
"detail-type": ["Investigation Completed"]
}'
aws events put-targets \
--rule "DevOps-Agent-Investigation-Completed" \
--targets "Id=notify-feishu,Arn=arn:aws:lambda:${AWS_REGION}:${AWS_ACCOUNT_ID}:function:devops-agent-notify-feishu"
5. 进阶:Chat API 实时对话
除了异步的 Backlog Task 方式,DevOps Agent 还提供 Chat API,支持实时对话式交互。企业可以基于此功能,将 AWS Devops Agent的能力集成至企业自己的运维系统或者通讯工具(如feishu/lark)中。
5.1 基本用法
import boto3
client = boto3.client("devops-agent", region_name="us-west-2")
# 创建聊天会话
chat = client.create_chat(
agentSpaceId="<YOUR_AGENT_SPACE_ID>",
userId="my-user",
userType="IAM",
)execution_id = chat["executionId"]
# 发送消息并获取流式响应
response = client.send_message(
agentSpaceId="<YOUR_AGENT_SPACE_ID>",
executionId=execution_id,
content="What EC2 instances are running in this account?",
userId="my-user",
)
# 解析 EventStream
for event in response["events"]:
if "contentBlockDelta" in event:
text = event["contentBlockDelta"].get("delta", {}).get("textDelta", {}).get("text", "")
if text:
print(text, end="", flush=True)
5.2 EventStream 事件类型
send_message 返回的是一个流式 EventStream,包含以下事件类型:
responseCreated — 响应开始
responseInProgress — Agent 正在处理
contentBlockStart — 新的内容块开始(文本或工具调用)
contentBlockDelta — 增量内容:textDelta(文本)或 jsonDelta(工具调用/结果)
contentBlockStop — 内容块结束
heartbeat — 长时间操作的保活信号
responseCompleted — 响应完成
responseFailed — 发生错误
5.3 多轮对话与上下文保持
使用相同的 executionId 可以进行多轮对话,Agent 会保持上下文:
# 第一轮:列出实例
response1 = client.send_message(..., content="List all running EC2 instances.")
# 第二轮:基于第一轮结果追问(Agent 记住了之前的实例列表)
response2 = client.send_message(..., content="Which one has the highest CPU?")
6. 总结
AWS DevOps Agent 代表了云运维领域的一个重要趋势:从被动响应走向主动治愈。本文演示的是”告警 → 调查 → 通知”这一闭环的第一步,而可以预见的演进方向远不止于此。
在自动修复层面,Agent 未来不仅能给出修复建议,还能在人工审批后(或在预设策略下自动地)直接执行修复操作——扩容实例、回滚部署、调整安全组规则——从”告诉你怎么修”进化到”帮你修好”。在预测性运维层面,随着调查记录的持续积累,Agent 对特定业务环境的理解会越来越深入,结合历史数据和趋势分析,它将能够在故障真正发生之前识别风险并预警,把运维模式从”事后灭火”推进到”事前预防”。在覆盖范围层面,GA 版本已经支持 Azure 和本地环境的接入,Agent 正在从 AWS 单云工具演进为跨云、跨本地的统一智能运维中枢。
AI Agent 在运维场景的应用,不是对现有监控工具的简单替代,而是一次范式升级。 它将运维从”人驱动、规则执行”的模式,推进到”AI 驱动、人审核”的新阶段。对于正在管理复杂云环境的团队来说,现在正是拥抱这一变革的最佳时机——从一个 EC2 告警的 Demo 开始,构建属于自己的智能运维体系。
➡️ 下一步行动:
相关产品:
相关文章:
*前述特定亚马逊云科技生成式人工智能相关的服务目前在亚马逊云科技海外区域可用。亚马逊云科技中国区域相关云服务由西云数据和光环新网运营,具体信息以中国区域官网为准。
本篇作者
AWS 架构师中心:云端创新的引领者
探索 AWS 架构师中心,获取经实战验证的最佳实践与架构指南,助您高效构建安全、可靠的云上应用

|
 |