v1.5 — Memory Store + 新页面 + 容器成本
· 阅读需 3 分钟
本版本引入 AgentCore Memory Store,按用户保留 365 天的对话历史。同时新增 EBS、MSK、OpenSearch 页面以及 ECS/EKS 容器成本分析。
核心新增
Memory Store(365 天) · 4 个新页面 · ECS/EKS 容器成本 · OpenCost 集成 · 移除 3 处硬编码值
AgentCore Memory Store
引入了按用户保留 365 天对话历史的 Memory Store。存储/检索逻辑在 src/lib/agentcore-memory.ts 中管理。
| 项目 | 说明 |
|---|---|
| 保留期限 | 365 天(eventExpiryDuration) |
| 用户隔离 | 从 Cognito JWT 提取 email(src/lib/auth-utils.ts) |
| 存储数据 | 问题、摘要、路由、使用的工具、响应时间 |
| 配置脚本 | 06e-setup-agentcore-memory.sh |
| 配置文件 | data/config.json 中的 memoryId、memoryName |
Memory 命名规则
Memory 名称中不能使用连字符(-),只允许下划线(_)。
正确示例:awsops_memory / 错误示例:awsops-memory
AgentCore 页面集成:
- 6 个 StatsCard:总调用次数、平均响应时间、各 Gateway 调用比例、各模型 token 用量
- 对话历史搜索:关键词、日期范围、按路由过滤
AI 页面集成:
- 在底部切换面板中查看对话历史
- 可引用之前的问题/响应上下文
新页面(4 个)
| 页面 | 路径 | 查询文件 | 主要功能 |
|---|---|---|---|
| EBS | /ebs | queries/ebs.ts | 卷/快照、加密、EC2 附加、Idle 卷检测 |
| MSK | /msk | queries/msk.ts | Kafka 集群、Broker 节点指标(CPU/Memory/Network)、KRaft 模式 |
| OpenSearch | /opensearch | queries/opensearch.ts | 域、N2N/At-Rest 加密、VPC 配置、集群状态 |
| Resource Inventory | /inventory | resource-inventory.ts | 18 类资源数量趋势(基于快照,零额外查询) |
Steampipe JSONB 注意事项
- MSK:
provisioned列为 JSONB,包含 Broker 数量、存储大小等 - OpenSearch:需确认
encryption_at_rest_optionsJSONB 中的enabled字段 - 编写查询前必须通过
information_schema.columns确认列名
容器成本分析
新增了分析 ECS 和 EKS 容器成本的 2 个页面和 API。
| 项目 | ECS(/container-cost) | EKS(/eks-container-cost) |
|---|---|---|
| 数据源 | CloudWatch Container Insights | OpenCost API |
| 回退 | 无 | 基于 Request 的计算 |
| 成本计算 | 应用 Fargate vCPU/GB 价格 | Pod CPU/Memory 分配成本 |
| API 路由 | /api/container-cost | /api/eks-container-cost |
| 配置 | - | 06f-setup-opencost.sh(Prometheus + OpenCost) |
AI 路由改进
| 项目 | Before | After |
|---|---|---|
| AgentCore 配置 | 代码内硬编码 | 从 data/config.json 读取 ARN |
| 工具使用显示 | 无 | 通过关键词匹配推断 MCP 工具 → UI 徽章 |
| 多路由失败 | 整体失败 | Bedrock Direct 回退 |
| 超时 | 60 秒 | 90 秒 |
工具使用推断
AgentCore 仅返回最终文本(没有 tool_call 标签)。extractUsedTools() 函数在响应内容中匹配关键词,推断使用的 MCP 工具并以徽章形式显示在 UI 上。
安全强化
| 问题 | 修复内容 |
|---|---|
| Sign Out | 通过服务端 API 删除 HttpOnly Cookie(POST /api/auth) |
| 硬编码 #1 | Steampipe 密码 → 动态获取 |
| 硬编码 #2 | Code Interpreter ID → data/config.json |
| 硬编码 #3 | Gateway URL → data/config.json |