亚马逊AWS官方博客

使用 Kiro AI IDE 开发 基于Amazon EMR 的Flink 智能监控系统实践

概述

本文介绍如何使用 Kiro AI IDE 开发 Amazon EMR Flink 智能监控系统,重点分享基于 Strands Agents MCPAWS Data Processing MCP 的开发实践,以及 Spec 驱动开发 的完整流程。

项目地址https://github.com/yangguangfu007/emr-flink-monitoring-agent

Kiro AI IDE 核心能力

1. Spec 驱动开发

Kiro 引入了 Spec 的概念,这是一种结构化的需求描述方式:

开发流程:

  1. 用自然语言描述需求 → 生成 requirements.md
  2. AI 理解需求并生成设计方案 → 生成 design.md
  3. 将设计方案分解为具体任务 → 生成 tasks.md
  4. 逐个实现任务,生成代码

2. Steering (引导规则)

Steering 是 Kiro 的知识管理系统,用于定义项目规范:

Steering 文件会自动注入到 AI 的上下文中,确保生成的代码符合项目规范。

3. MCP (Model Context Protocol) 集成

Kiro 支持 MCP 服务器,可以扩展 AI 的能力:

  • Strands Agents MCP:提供 Strands Agents文档和示例
  • AWS Data Processing MCP:提供 AWS Glue、Amazon EMR、Amazon Athena 等服务的操作能力
  • 自定义工具和命令

技术选型与架构

技术栈

后端: – Python 3.10+ – FastAPI (异步 Web 框架) – Strands Agents(多 Agent 框架) – boto3 (AWS SDK)

前端: – React 18 + TypeScript – Ant Design (UI 组件库) – Vite (构建工具)

AI: – Amazon Bedrock

项目架构

基于 MCP 的开发实践

1. 配置 Strands Agents MCP

在 .kiro/settings/mcp.json 中配置:

{
  "mcpServers": {
    "strands-agents": {
      "command": "uvx",
      "args": ["strands-mcp-server@latest"],
      "env": {
        "FASTMCP_LOG_LEVEL": "ERROR"
      },
      "disabled": false,
      "autoApprove": ["search_docs", "fetch_doc"]
    }
  }
}

使用 MCP 工具查询 Strands Agents文档:

我:如何使用 Strands Agents实现 Agents as Tools 模式?

Kiro:让我查询 Strands Agents文档…
[调用 strands-agents MCP: search_docs(“agents as tools”)]

根据文档,实现步骤如下:
1. 创建子 Agent 类
2. 实现 as_tool() 方法
3. 在主 Agent 中注册为工具

[生成示例代码]

2. 配置 AWS Data Processing MCP

{
  "mcpServers": {
    "aws-dp": {
      "command": "uvx",
      "args": ["awslabs.aws-data-processing-mcp-server@latest"],
      "env": {
        "AWS_REGION": "us-east-1"
      },
      "disabled": false,
      "autoApprove": []
    }
  }
}

使用 MCP 工具操作 AWS 服务:

我:帮我查询 Amazon EMR 集群 j-xxx 的信息

Kiro:[调用 aws-dp MCP: describe_emr_cluster(“j-xxx”)]

集群信息:
– 状态:RUNNING
– Master 节点:m5.xlarge
– Core 节点:3 × m5.xlarge
– VPC:vpc-xxx

Spec 驱动开发实践

第 1 步:创建 Requirements

与 Kiro 对话描述需求:

我:我想开发一个基于 Amazon EMR 集群的智能监控 agent系统,该系统第一期功能:监控 Flink 任务、分析任务状态并提供优化建议。

Kiro:我理解了您的需求。让我为您创建项目 Spec…

生成的 requirements.md 包含:- 用户故事 (User Stories) – 验收标准 (Acceptance Criteria) – 非功能性需求 (Performance, Security)

第 2 步:生成 Design

Kiro 基于需求自动生成设计方案:

[生成 .kiro/specs/emr-flink-monitoring-agent/design.md]

第 3 步:任务分解

Kiro 将设计方案分解为具体任务:

[生成 .kiro/specs/emr-flink-monitoring-agent/tasks.md]

第 4 步:执行任务

逐个执行任务,Kiro 自动生成代码。

核心功能开发

1. 多 Agent 系统

基于 Strands Agents的”Agents as Tools”模式实现:

# Orchestrator 将子 Agent 注册为工具
self.tools = [
    self.flink_agent.as_tool(),
    self.general_agent.as_tool()
]

# LLM 自主选择合适的 Agent
async for event in bedrock_stream(
    model="us.anthropic.claude-haiku-4-5-20251001-v1:0",
    messages=[{"role": "user", "content": message}],
    tools=self.tools
):
    yield event

2. AI 分析器 (智能降级)

async def analyze_job(self, job_data: dict) -> AnalysisResult:
    try:
        # 优先使用 AI 分析
        return await self.ai_analyzer.analyze(job_data)
    except Exception as e:
        # 降级到规则分析
        return self.rule_analyzer.analyze(job_data)

3. 流式输出

后端使用 Strands Agents的 stream_async():

async for event in agent.stream_async(user_message):
    yield f"data: {json.dumps(event)}\n\n"
前端使用 EventSource 接收:
const eventSource = new EventSource('/api/chat');
eventSource.onmessage = (event) => {
  const data = JSON.parse(event.data);
  // 实时更新 UI
};

Kiro 最佳实践

1. 充分利用 Steering 规则

在项目开始时定义好规范:

# .kiro/steering/language.md
– 代码注释使用中文
– 日志使用英文
– 专有名词保持英文

# .kiro/steering/work-style.md
– 修改优先于创建
– 避免创建临时文件
– 保持项目整洁

2. 使用 Spec 驱动开发

不要直接让 Kiro 生成代码,而是先创建 Spec:

  1. md → 功能需求、性能需求、安全需求
  2. md → 架构设计、模块划分、接口设计
  3. md → 任务分解

然后让 Kiro 逐个实现任务。

3. 善用 MCP 工具

  • 使用 Strands Agents MCP 查询文档
  • 使用 AWS Data Processing MCP 操作 AWS 服务
  • 自定义 MCP 服务器扩展能力

4. 迭代优化

不要期望 Kiro 一次生成完美的代码:

  1. 第 1 轮:生成基础功能
  2. 第 2 轮:添加错误处理
  3. 第 3 轮:优化性能
  4. 第 4 轮:添加测试
  5. 第 5 轮:完善文档

实际案例:从需求到上线

Day 1:需求分析和架构设计 (2 小时)

  • 与 Kiro 对话描述需求
  • 生成md、design.md、tasks.md

Day 2-3:核心功能开发 (5 小时)

  • 任务 1:指标收集器 (30 分钟)
  • 任务 2:AI 分析器 (45 分钟)
  • 任务 3:多 Agent 系统 (1 小时)
  • 任务 4:FastAPI 接口 (20 分钟)
  • 任务 5:React 前端 (2 小时)

Day 4:测试和优化 (3 小时)

  • 单元测试 (40 分钟)
  • 端到端测试 (2 小时)
  • 代码审查 (20 分钟)

总耗时:10 小时 (需求到上线)
传统方式预估:60-80 小时
效率提升6-8

总结

通过使用 Kiro AI IDE 开发 Amazon EMR Flink 监控系统,我们深刻体会到 AI 辅助开发的价值:

  1. 效率提升:开发效率提升 6-8 倍
  2. 质量提升:代码规范性 100%,测试覆盖率 85%
  3. 学习加速:通过 AI 生成的代码学习新技术
  4. 决策辅助:AI 帮助做出正确的技术选型

核心亮点:

  • Spec 驱动开发:结构化需求描述,逐步实现
  • MCP 集成:扩展 AI 能力,查询文档和操作 AWS 服务
  • Steering 规则:确保代码符合项目规范
  • 迭代优化:逐步完善,而非一次完美

参考资源

*前述特定亚马逊云科技生成式人工智能相关的服务目前在亚马逊云科技海外区域可用。亚马逊云科技中国区域相关云服务由西云数据和光环新网运营,具体信息以中国区域官网为准。

本篇作者

杨光富

亚马逊云科技解决方案架构师,专注于帮助客户构建和优化云端架构解决方案。曾任职知名互联网大厂,拥有多年大数据平台研发和架构设计经验。目前专注于AI+Data原生解决方案的架构设计与实施。