Bedrock Managed Agents 实战:声明式配置 Agent 告别自建编排框架
搭过 AI Agent 的都知道——模型调用只是开头,真正费劲的是编排层。
工具调用怎么路由、多步推理怎么管理状态、长时间任务怎么断点续传、异常怎么处理、可观测怎么做……这些问题加在一起,比选模型难十倍。
亚马逊云科技在 "What's Next with AWS 2026" 上发布了 Amazon Bedrock Managed Agents, powered by OpenAI(Limited Preview)。核心卖点:你只管定义 Agent 的能力和工具,编排、调度、状态管理全部由 Bedrock 托管。不用自己搭 LangChain/LangGraph/CrewAI 那套基础设施。
解决什么问题
自己搭 Agent 编排框架的痛点:
| 问题 | 自建方案 | Managed Agents |
|---|---|---|
| 编排逻辑 | 自己写(LangChain/自研) | Bedrock 托管 |
| 状态管理 | 自己维护(Redis/DDB) | 内置 |
| 长任务 | 自己实现断点续传 | 内置 |
| 工具调用 | 自己写 adapter | 声明式配置 |
| 错误重试 | 自己写重试逻辑 | 内置策略 |
| 可观测 | 接 OpenTelemetry | CloudWatch 原生 |
| 扩缩容 | 自己管容器/函数 | 全托管 |
说白了,Managed Agents 把 Agent 从"应用开发"变成了"配置声明"。
快速上手
创建 Managed Agent
import boto3
import json
bedrock_agent = boto3.client('bedrock-agent', region_name='us-east-1')
# 创建一个运维排障 Agent
agent = bedrock_agent.create_agent(
agentName='ops-troubleshooter',
description='自动诊断和修复线上问题',
foundationModel='openai.gpt-5-5-v1:0',
instruction='''你是一个 AWS 运维专家 Agent。
当收到告警时,你需要:
1. 分析告警内容,确定影响范围
2. 查看相关服务的 CloudWatch 指标和日志
3. 诊断根因
4. 如果是已知问题,执行预定义的修复操作
5. 如果是未知问题,收集诊断信息并通知值班人员
原则:
- 影响生产环境的操作需要确认
- 所有操作必须记录审计日志
- 超过 15 分钟未解决的问题要升级''',
idleSessionTTLInSeconds=1800,
agentResourceRoleArn='arn:aws:iam::123456789:role/bedrock-agent-ops-role'
)
agent_id = agent['agent']['agentId']
print(f"Agent 创建成功: {agent_id}")
配置工具(Action Groups)
# 添加 CloudWatch 查询工具
bedrock_agent.create_agent_action_group(
agentId=agent_id,
agentVersion='DRAFT',
actionGroupName='cloudwatch-tools',
actionGroupExecutor={
'lambda': 'arn:aws:lambda:us-east-1:123456789:function:agent-cw-tools'
},
apiSchema={
'payload': json.dumps({
"openapi": "3.0.0",
"info": {"title": "CloudWatch Tools", "version": "1.0"},
"paths": {
"/get-metrics": {
"post": {
"description": "获取指定服务的 CloudWatch 指标数据",
"parameters": [
{"name": "namespace", "in": "query", "required": True,
"schema": {"type": "string"}, "description": "CloudWatch 命名空间,如 AWS/Lambda"},
{"name": "metric_name", "in": "query", "required": True,
"schema": {"type": "string"}, "description": "指标名称"},
{"name": "period_minutes", "in": "query",
"schema": {"type": "integer", "default": 60}}
]
}
},
"/query-logs": {
"post": {
"description": "查询 CloudWatch Logs Insights",
"parameters": [
{"name": "log_group", "in": "query", "required": True,
"schema": {"type": "string"}},
{"name": "query", "in": "query", "required": True,
"schema": {"type": "string"}, "description": "Logs Insights 查询语句"},
{"name": "time_range_minutes", "in": "query",
"schema": {"type": "integer", "default": 30}}
]
}
},
"/restart-service": {
"post": {
"description": "重启指定的 ECS 服务",
"parameters": [
{"name": "cluster", "in": "query", "required": True,
"schema": {"type": "string"}},
{"name": "service", "in": "query", "required": True,
"schema": {"type": "string"}},
{"name": "confirm", "in": "query", "required": True,
"schema": {"type": "boolean"}, "description": "必须为 true 才执行"}
]
}
}
}
})
}
)
添加知识库
# 关联运维知识库(Runbook、历史故障分析等)
bedrock_agent.associate_agent_knowledge_base(
agentId=agent_id,
agentVersion='DRAFT',
knowledgeBaseId='kb-runbook-ops-2026',
description='运维手册和历史故障分析文档',
knowledgeBaseState='ENABLED'
)
调用 Agent
bedrock_agent_runtime = boto3.client('bedrock-agent-runtime', region_name='us-east-1')
# 模拟收到告警后调用 Agent
response = bedrock_agent_runtime.invoke_agent(
agentId=agent_id,
agentAliasId='prod-alias',
sessionId='incident-2026-05-26-001',
inputText='''
收到 PagerDuty 告警:
- 服务: payment-service
- 告警: 错误率超过 10%(当前 23%)
- 开始时间: 2026-05-26 19:45 UTC
- 影响: 支付接口 30% 请求失败
请立即诊断并给出修复建议。
'''
)
# Agent 会自动:
# 1. 调用 get-metrics 查看 payment-service 的详细指标
# 2. 调用 query-logs 分析错误日志
# 3. 在知识库中搜索类似故障的处理方案
# 4. 给出诊断结果和修复建议
# 5. 如果是已知问题(如下游超时),可直接执行修复
for event in response['completion']:
if 'chunk' in event:
print(event['chunk']['bytes'].decode(), end='')
长时间任务
Managed Agents 支持长时间运行的任务,不会因为 Lambda 超时或 API Gateway 30 秒限制而中断:
# 启动一个长时间任务
task = bedrock_agent_runtime.invoke_agent(
agentId=agent_id,
agentAliasId='prod-alias',
sessionId='migration-task-001',
inputText='''
执行数据库迁移任务:
1. 对 orders 表做 schema 变更(加 3 列)
2. 回填历史数据(约 500 万行)
3. 验证数据一致性
4. 切换读流量到新表
每一步完成后报告进度。
''',
enableTrace=True,
sessionState={
'invocationTimeout': 3600 # 最长 1 小时
}
)
Agent 会在后台持续执行,你可以随时查看进度:
# 查看任务进度
trace = bedrock_agent_runtime.get_agent_memory(
agentId=agent_id,
agentAliasId='prod-alias',
memoryId='migration-task-001',
memoryType='SESSION_SUMMARY'
)
可观测性
所有 Agent 行为自动上报 CloudWatch:
# Agent 自动生成的 CloudWatch 指标:
# - bedrock/agent/InvocationCount
# - bedrock/agent/ToolCallCount
# - bedrock/agent/Latency (P50/P90/P99)
# - bedrock/agent/ErrorRate
# - bedrock/agent/TokensUsed (input/output)
# - bedrock/agent/SessionDuration
# 设置告警
cloudwatch = boto3.client('cloudwatch')
cloudwatch.put_metric_alarm(
AlarmName='agent-error-rate-high',
Namespace='AWS/Bedrock',
MetricName='AgentErrorRate',
Dimensions=[{'Name': 'AgentId', 'Value': agent_id}],
Statistic='Average',
Period=300,
EvaluationPeriods=2,
Threshold=5.0,
ComparisonOperator='GreaterThanThreshold',
AlarmActions=['arn:aws:sns:us-east-1:123456789:ops-alerts']
)
和自建方案的成本对比
假设一个中等复杂度的 Agent,日调用 1000 次:
| 项目 | 自建(ECS + Redis + 自研编排) | Managed Agents |
|---|---|---|
| 计算 | ~$150/月(ECS Fargate) | $0(按调用计费) |
| 存储 | ~$30/月(Redis/DDB) | 包含在服务费中 |
| 开发维护 | 2 人/月(编排框架维护) | 0 |
| 模型调用 | Bedrock 按 token 计 | 同 |
| 总计 | ~$180/月 + 人力 | 按调用量计费 |
规模小的时候 Managed Agents 成本优势明显;规模大了之后看具体定价(Preview 阶段定价未定)。
我的判断
Managed Agents 的价值在于降低 Agent 的工程门槛。
之前搭一个生产级 Agent 需要:选框架(LangChain/LlamaIndex/自研)、搭编排(状态机/DAG)、做持久化(会话/记忆)、加可观测(Trace/Metrics)、处理并发和扩缩容。这一堆事情加起来,至少一个高级工程师干 2-3 周。
Managed Agents 把这些全托管了,你只需要定义"Agent 能做什么"(工具+指令),不用管"Agent 怎么运转"。对于 80% 的 Agent 场景来说,这就够了。
当然,超复杂的多 Agent 协作、自定义编排逻辑这些高级场景,可能还是需要自建。但大多数企业场景——客服 Agent、运维 Agent、数据分析 Agent——Managed 方案完全够用。
相关链接:
- Bedrock Managed Agents 公告:https://aws.amazon.com/bedrock/managed-agents-openai/
- What's Next with AWS 2026:https://aws.amazon.com/blogs/aws/top-announcements-of-the-whats-next-with-aws-2026/
- Amazon Bedrock Agents 文档:https://docs.aws.amazon.com/bedrock/latest/userguide/agents.html

浙公网安备 33010602011771号