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

亚马逊云开发者
企业官方账号
2025-12-31 10:10:36

概述

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

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

🔥 想利用生成式AI开发工具解放双手,却苦于应用效果不够完善、流程不够规范?

✨ 亚马逊云科技 Kiro 登场!采用“规范驱动”开发理念,结合 Agent Hooks 自动化系统,1小时让小白变身生产级游戏制作人!

🔛 速来云上探索实验室,体验 Kiro 开发独立游戏,从需求到部署全掌握!

👉点击这里,即刻开启 AI 开发之旅!

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文档和示例

  • Amazon Data Processing MCP:提供 Amazon Glue、Amazon EMR、Amazon Athena 等服务的操作能力

  • 自定义工具和命令

技术选型与架构

技术栈

后端: – Python 3.10+ – FastAPI (异步 Web 框架) – Strands Agents(多 Agent 框架) – boto3 (Amazon 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. 配置 Amazon 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 工具操作亚马逊云科技服务:

我:帮我查询 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 查询文档

  • 使用 Amazon Data Processing MCP 操作亚马逊云科技服务

  • 自定义 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 能力,查询文档和操作亚马逊云科技服务

  • Steering 规则:确保代码符合项目规范

  • 迭代优化:逐步完善,而非一次完美

参考资源

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

本篇作者

 

🔥 想利用生成式AI开发工具解放双手,却苦于应用效果不够完善、流程不够规范?

✨ 亚马逊云科技 Kiro 登场!采用“规范驱动”开发理念,结合 Agent Hooks 自动化系统,1小时让小白变身生产级游戏制作人!

🔛 速来云上探索实验室,体验 Kiro 开发独立游戏,从需求到部署全掌握!

👉点击这里,即刻开启 AI 开发之旅!

...全文
171 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
源码链接: https://pan.quark.cn/s/0f7c75cb3aad ### MIPI Video Mode 与 Command Mode 的差异 #### 一、引言 MIPI (Mobile Industry Processor Interface) 是一种用于连接移动设备中处理器及其外围设备的标准化接口。MIPI 接口支持多种协议,其中包含 DSI (Display Serial Interface) 和 DCS (Display Control Interface) 等协议。在 MIPI 接口的应用中,主要涉及两种工作模式:Video Mode(视频模式)和 Command Mode(命令模式)。本文旨在系统性地阐述这两种模式的工作机制、特性以及实际应用环境。 #### 二、LCD RAM 概念说明 在进一步探讨 MIPI 的两种模式之前,有必要对文中提及的“LCD RAM”概念进行明确。实际上,“LCD RAM”并非一个通用术语,而是本文作者用来描述 LCD 控制器中用于存储显示数据的内存区域。LCD(Liquid Crystal Display,液晶显示屏)通常配备一个控制 IC(Integrated Circuit,集成电路),该控制 IC 可能内置 RAM 以缓存显示数据。 #### 三、MIPI Video Mode(视频模式) **定义:** - 视频模式是一种类似于传统 RGB 接口的工作模式,它要求主机持续不断地向显示器传输刷新数据。 - 在这种模式下,数据和控制信号以报文的形式通过 MIPI 总线进行传输。 - 显示器本身无需配备帧缓冲器,因为主机会周期性地刷新屏幕。 **特点:** 1. **实时性高:** 主机需要不...
源码下载地址: https://pan.quark.cn/s/a4b39357ea24 在电磁模拟技术中,CST(Computer Simulation Technology)是一种被广泛采纳的软件工具,它主要用于电磁场、微波、天线以及射频系统的设计工作。本资料将详细分析CST软件中离散端口的具体配置方法,这些方法对于提升仿真结果的精确度和专业水准具有决定性作用。离散端口在CST软件中扮演着模拟信号输入或输出的重要角色,它们构成了仿真模型不可或缺的部分。在配置离散端口时,一个核心的原则是保证端口的方向与网格线保持一致,这是因为这样做能够有效降低计算过程中产生的误差,并确保仿真数据的有效性。如果未能遵循这一指导原则,可能会引发未知的计算问题,进而导致仿真结果失去可靠性。 在CST软件中配置离散端口,通常需要借助“Pick Points”这一功能。通过选择“Pick Edge Center”选项,端口将被设定在模型边缘的中心位置上。然而,这种做法并不总是能够确保端口与网格线保持平行。在某些特定情形下,模型的几何构造可能不允许直接选取一个与网格线平行的边作为端口的安装位置。 为了克服这一挑战,可以采用多种不同的策略。如果模型本身已经包含一条与馈电口平行的边,那么可以直接利用这条边来建立端口,此时CST软件会自动调整端口使其与网格线对齐。另一种可选的方法是,当模型不具备现成的平行边时,用户可以手动构建一个几何结构,比如一个立方体,并使其边缘与馈电口平行。通过这种方式,新建立的几何结构的边缘就可以作为端口的位置,从而确保端口与网格线的平行关系。 在实施上述操作时,必须关注端口尺寸的合理性和物理意义的一致性。端口的尺寸应当依据实际天线馈电部分的尺寸进行适当调整,过大的端口或...

828

社区成员

发帖
与我相关
我的任务
社区描述
亚马逊云科技在CSDN的官方开发者社区会分享云计算、AI、IoT等领域前沿技术,以及亚马逊云科技最新产品技术,帮助开发者学习成长,在这里你能看到大咖分享,与Hero对话,还有builder分享的实操。
学习经验分享 企业社区
社区管理员
  • 亚马逊云开发者
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

亚马逊云科技会分享云计算、AI、IoT等领域前沿技术,以及亚马逊云科技最新产品技术,帮助开发者学习成长;

在这里你能看到大咖分享,与Hero对话,还有builder分享的实操心得;

同样,我们也欢迎开发者交流互动,打造CSDN上亚马逊云开发者及爱好者的技术社区;

 

试试用AI创作助手写篇文章吧