随着企业在亚马逊云科技上的工作负载日益复杂——Amazon EC2集群、Amazon RDS数据库、Amazon ECS/EKS容器、Amazon Lambda函数、网络与负载均衡等多种服务交织运行——运维团队面临严峻挑战:
告警爆炸:Amazon CloudWatch、第三方监控(Datadog、PagerDuty、Grafana等)每天产生数百条告警,涉及CPU、内存、磁盘、网络、错误率等数十种指标,运维团队疲于应对。
跨服务关联困难:一个故障追溯可能需要人工从Amazon CloudWatch指标、Amazon CloudTrail操作记录、VPC Flow Logs、Config变更中逐一关联,效率极低。
响应延迟:从告警触发到定位根因,往往需要30分钟到数小时,甚至更久。对于生产环境的P1故障,每分钟的延误都意味着业务损失。
知识难以沉淀:资深工程师的排查经验分散在个人脑海和零散的runbook中,团队扩张时知识传递成本高。
多环境多区域管理:跨Region、跨账户的故障排查更加复杂,单靠人工难以全面覆盖。
Amazon DevOps Agent正是为解决这些运维痛点而生。它是一个AI驱动的自主运维Agent,能够自动接收来自任何亚马逊云科技服务的告警、跨服务关联数据(Amazon CloudWatch指标、Amazon CloudTrail事件、Amazon Config变更、VPC网络日志等)、执行深度根因分析,并生成结构化的调查报告——整个过程无需人工干预。
Amazon DevOps Agent介绍
亚马逊云科技于2025年12月re:Invent大会发布Amazon DevOps Agent公开预览版(Public Preview),并于2026年3月31日宣布其正式可用。
它是一款AI驱动的自主运维服务,内置了对亚马逊云科技全栈服务的深度理解,能够像一位资深SRE工程师一样,自动接收告警、主动收集证据、跨服务关联分析,并输出结构化的根因分析报告。正式可用版本还新增了对Azure云环境和本地基础设施的支持。
核心能力
全栈服务分析
Agent自动构建应用拓扑(Application Topology),动态发现并映射亚马逊云科技账户中的资源及其依赖关系。无需预先指定服务列表,Agent能自动调用相关Amazon API收集指标、日志和配置信息。正式可用版本还支持Azure和本地环境(通过MCP)。
AI自主调查
接收告警后Agent自主决定调查策略——先查什么、再查什么、如何关联——无需预定义runbook。调查范围涵盖Amazon CloudWatch指标与日志、Amazon 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)调用Amazon API,所有操作可通过Amazon CloudTrail审计;调查记录持久保存,满足合规要求。
多种触发方式
Backlog Task(create_backlog_task)
异步模式,Agent自主调查,通过EventBridge通知完成。适用于自动化运维流水线、Amazon CloudWatch/自定义告警触发。
Chat(create_chat+send_message)
同步流式响应,支持多轮对话,Agent实时调用Amazon API。适用于交互式排查、实时问答、On-Call辅助。
Webhook(第三方POST到webhook URL)
Agent自动接收并智能判断是否需要调查。适用于对接PagerDuty、Datadog、Grafana、GitLab等。
Demo方案架构
本文以Amazon EC2 CPU告警作为演示场景,展示完整的事件驱动架构。
同一架构模式可直接适用于上述所有场景——只需调整EventBridge Rule的事件匹配模式和Lambda-A中的告警解析逻辑即可。该架构具有通用性——将Amazon CloudWatch Alarm替换为任意亚马逊云科技服务的告警源(RDS、Lambda、ECS等),即可复用同一套事件驱动流水线。
架构图
数据流(8步)
1.EC2 CPU飙升:
stress --cpu 4模拟高负载。
2.CloudWatch Alarm触发:
CPU>80%持续2个评估周期,状态OK→ALARM。
3.EventBridge Rule-1匹配:
捕获aws.cloudwatch/CloudWatch Alarm State Change事件。
4.Lambda-A触发调查:
调用create_backlog_task(taskType='INVESTIGATION')
5.DevOps Agent自主调查:
分析Amazon CloudWatch指标、Amazon CloudTrail事件、EC2配置(5~15分钟)。
6.调查完成事件:
DevOps Agent发布aws.aidevops/Investigation Completed事件。
7.Lambda-B获取结果:
调用list_journal_records(),提取investigation_summary_md记录。
8.聊天工具通知:
将Markdown格式的调查摘要发送到聊天工具群。
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。
部署步骤
环境变量配置
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>"左右滑动查看完整示意
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": "*" }] }'左右滑动查看完整示意
Lambda Layer(最新boto3)
*重要提醒:
Lambda运行时内置的boto3不包含devops-agent服务,必须通过Layer提供最新版本。
mkdir -p /tmp/boto3-layer/pythonpip 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左右滑动查看完整示意
部署两个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 jsonimport osimport 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格式的完整调查摘要,可直接用于通知展示。
Journal Record类型一览
investigation_summary_md:完整调查摘要(Markdown格式)。
investigation_summary:结构化调查摘要(JSON格式)。
symptom:发现的症状。
finding:调查发现(含根因)。
observation:观测数据。
investigation_gap:调查中的信息缺口。
message:Agent的对话消息。
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"左右滑动查看完整示意
进阶:Chat API实时对话
除了异步的Backlog Task方式,DevOps Agent还提供Chat API,支持实时对话式交互。企业可以基于此功能,将Devops Agent的能力集成至企业自己的运维系统或者通讯工具中。
基本用法
import boto3client = 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",)# 解析 EventStreamfor event in response["events"]: if"contentBlockDelta" in event: text = event["contentBlockDelta"].get("delta", {}).get("textDelta", {}).get("text", "") if text: print(text, end="", flush=True)左右滑动查看完整示意
EventStream事件类型
send_message返回的是一个流式EventStream,包含以下事件类型:
responseCreated:响应开始。
responseInProgress:Agent正在处理。
contentBlockStart:新的内容块开始(文本或工具调用)。
contentBlockDelta:增量内容——textDelta(文本)或jsonDelta(工具调用/结果)。
contentBlockStop:内容块结束。
heartbeat:长时间操作的保活信号。
responseCompleted:响应完成。
responseFailed:发生错误。
多轮对话与上下文保持
使用相同的executionId可以进行多轮对话,Agent会保持上下文:
# 第一轮:列出实例response1 = client.send_message(..., content="List all running EC2 instances.")# 第二轮:基于第一轮结果追问(Agent 记住了之前的实例列表)response2 = client.send_message(..., content="Which one has the highest CPU?")左右滑动查看完整示意
总结
Amazon DevOps Agent代表了云运维领域的一个重要趋势:从被动响应走向主动治愈。本文演示的是“告警→调查→通知”这一闭环的第一步,而可以预见的演进方向远不止于此。
自动修复层面
Agent未来不仅能给出修复建议,还能在人工审批后(或在预设策略下自动地)直接执行修复操作——扩容实例、回滚部署、调整安全组规则——从“告诉你怎么修”进化到“帮你修好”。
预测性运维层面
随着调查记录的持续积累,Agent对特定业务环境的理解会越来越深入,结合历史数据和趋势分析,它将能够在故障真正发生之前识别风险并预警,把运维模式从“事后灭火”推进到“事前预防”。
覆盖范围层面
Amazon DevOps Agent现已支持Azure和本地环境的接入,Agent正在从亚马逊云科技单云工具演进为跨云、跨本地的统一智能运维中枢。
AI Agent在运维场景的应用,不是对现有监控工具的简单替代,而是一次范式升级。它将运维从“人驱动、规则执行”的模式,推进到“AI驱动、人审核”的新阶段。
对于正在管理复杂云环境的团队来说,现在正是拥抱这一变革的最佳时机——从一个Amazon EC2告警的Demo开始,构建属于自己的智能运维体系。
本篇作者
张盼富
亚马逊云科技解决方案架构师,从业十三年,先后经历过云计算、供应链金融、电商等多个行业,担任过高级开发、架构师、产品经理、开发总监等多种角色,有丰富的大数据应用与数据治理经验。加入亚马逊云科技后,致力于通过大数据+AI技术,帮助企业加速数字化转型。
Gao Yunyi
亚马逊云科技生成式AI解决方案架构师,负责亚马逊云科技的人工智能与机器学习、生成式AI方案及架构设计咨询。
新用户注册海外区域账户,可获得最高200美元服务抵扣金,覆盖Amazon Bedrock生成式AI相关服务。“免费计划”账户类型,确保零花费,安心试用。
星标不迷路,开发更极速!
关注后记得星标「亚马逊云开发者」
听说,点完下面4个按钮
就不会碰到bug了!
点击阅读原文查看博客!获得更详细内容!