Amazon Q Developer CLI + 飞书——打造对话式的 AI Agent 智能运维平台

项目背景

在现代云原生架构中,越来越多的组织采用微服务模式,系统由多个团队共同维护。为了隔离权限和业务板块,不少组织会管理数十个亚马逊云科技账号。当出现问题时,传统的响应方式往往是逐一联系相关负责人进行排查,导致沟通链条冗长、协作效率低下,甚至可能错失最佳处理时机。这种"拉人战术"不仅消耗大量时间,还会导致问题定位和解决的延迟。此外,在亚马逊云科技官方博客《Generative AI-powered technology operations》中也曾指出,传统的运维工作,如事件管理、知识库维护、支持工单处理,通常需要大量的人工干预和重复性工作。

为了解决这一挑战,亚马逊云科技提供了生成式 AI 解决方案,如 Amazon Bedrock、Amazon Q Developer,旨在通过自然语言交互和智能体的特性,自动化这些任务,提升技术运维的整体效率和响应速度。

📢限时插播:Amazon Q Developer 来帮你做应用啦!

🌟10分钟帮你构建智能番茄钟应用,1小时搞定新功能拓展、测试优化、文档注程和部署

⏩快快点击进入《Agentic Al 帮你做应用 -- 从0到1打造自己的智能番茄钟》实验

免费体验企业级 AI 开发工具的真实效果吧

构建无限,探索启程!

本文将指导您如何结合 Amazon Q Developer CLI 和 飞书(也可以是其它具备开放平台的 IM 工具,如 Slack),搭建对话式的 AI Agent 智能运维平台。

技术方案总览

1、通过飞书或 Slack 开放平台创建 Bot 应用并开通相应的权限,用户通过在飞书中 @ 机器人并输入问题发起会话

2、Lambda 中运行的 Function 作为协调器,通过 Bedrock 引入较小参数的 LLM 识别用户意图并过滤无效请求:

  • 当识别到用户会话内容和运维无关,则直接回复不适用;
  • 当识别到用户会话内容不需要查询当前亚马逊云科技服务或 K8S 集群的运行状态,则直接结合 Bedrock 知识库进行回复;
  • 当识别到用户会话内容需要结合亚马逊云科技各项服务的状态,则调用部署在 EC2 上的 Q CLI 代理程序启动 Q CLI 进行数据采集、分析总结后回复;

3、Amazon Bedrock 作为亚马逊云科技的大模型服务平台,提供市面上一流的大语言模型,包括 Claude 4,DeepSeek-R1 满血版等。在此方案中,我们选择了参数较小的 LLM 用于意图识别,并结合知识库做 RAG,输出的内容也可以通过 Guardrails 进行过滤与防护。关于知识库与安全围栏可参考以下文档搭建:

4、EC2 实例中主要运行下服务:

  • Q CLI 代理服务:用于接收 Lambda 传入的会话内容并调起 Q CLI 的 q chat 命令发起会话;
  • Amazon Q Developer CLI:Q CLI 核心工作原理遵循 ReAct(Reasoning and Action)框架:
  • 思维链(Chain of Thought):将一个大的复杂任务进行拆解,拆解成多个思维步骤。
  • 推理(Reasoning):负责分析和处理输入的数据,生成有效的决策。
  • 行动(Action):执行具体的操作,比如搜索、执行代码,或者其余自定义的行动。
  • 观察(Observation):监控和收集环境反馈的数据,为下一步的推理和行动提供依据。
  • (可选)配置多账号的 AWmazon CLI Profile ,需要提前为 Amazon CLI 设置不同账号的 Profile;
  • (可选)配置其它命令行工具,如 kubectl、helm 或其它云平台的 CLI 工具;
  • (可选)配置 MCP Servers,需要为 Q CLI 注册需要使用的 MCP Servers,拓展 Q CLI 能力。

5、本文主要包含 Amazon Bedrock Knowledge Bases Retrieval MCP Server 和 Amazon Support MCP Server:

  • Amazon Bedrock Knowledge Bases Retrieval MCP Server 用于 Q CLI 结合知识库中的 runbook 来判断当前服务是否正常,解答类似这样的问题:"请告诉我最近半个月生产环境的 MSK 集群的各项指标是否满足我们的 SLA 要求"。Q CLI 在提取 MSK 集群最近半个月指标,再从知识库中提取 SLA 预定义的指标数据,给出最终回复。甚至在保障安全的前提下执行 runbook 中定义的脚本自动化修复问题。
  • Amazon Support MCP Server 根据工单模板 Q CLI 自动填充相关信息:包括工单类别,服务 ID 与问题描述等,最后自动提交技术工单,提升整体效率并降低人工操作的错误率。同时也能检索过往工单内容,提取类似问题的解决方法。

实施步骤

1、创建 Lambda 用于集成飞书聊天机器人,实现与用户的对话功能

Lambda 用于接收群内用户 @机器人 发送的消息,然后调用 Bedrock LLM 对问题实现意图识别:

  • 当用户的问题有关亚马逊云科技账号中各项服务的运行情况、故障定位等问题时,则调用 Q CLI 的代理服务以获取答案;
  • 当用户的问题涉及运维相关的操作手册、配置文档、应急响应手册、知识库等内容的查询,则通过 Bedrock Knowledge Bases 构建的知识库 RAG 系统做出回复;
  • 无关问题则返回默认回复。

步骤:

1、创建 Lambda Function,本方案 Function 命名为:LarkBotAdapter,Runtime 选择 Python 3.12,Architecture 选择 x86_64,Execution role 选择 Create a new role with basic Lambda permissions,完成创建。

a. Lambda 有依赖项,可使用 Layer 来导入依赖包。在 Lambda 左侧导航窗格中点击 Layers,上传已打包好的 Layer 文件点击下载,完成创建。在 Lambda 的 Code => Layers 中 添加这个 Layer 供运行时引用。

b. 编辑自动创建的 Lambda Role 的权限策略 (AWSLambdaBasicExecutionRole-xxxx),添加调用 Bedrock LLMs 的权限:

json 复制代码
{
    "Sid": "BedrockClaudeHaikuAccess",
    "Effect": "Allow",
    "Action": [
        "bedrock:InvokeModel",
        "bedrock:InvokeModelWithResponseStream"
    ],
    "Resource": [
        "arn:aws:bedrock:*::foundation-model/*"
    ]
}

c. 上传 Lambda 文件 lambda_function.py 和 intent_recognition.py。

d. 在 Lambda Configuration 中调整 Lambda 的超时时间为 10 分钟、调整 Lambda 的运行内存为 512m;开启 SnapStart 以消除冷启动时间,然后在 Lambda 的Versions 中 点击 Publish new version 发布一个开启了 SnapStart 的 Lambda Version。

2、创建 API Gateway,构建 HTTP API,添加 / ANY 的 Route;配置 Integration,Integration target 选择 Lambda function,在下拉列表中选中 LarkBotAdapter 的 arn,并在末尾加上 :版本号 以使用 SnapStart 的版本,例如:arn:aws:lambda:us-east-1:123456789012:function:LarkBotAdapter:1;增大Integration 中的超时时间为 30 秒。

3、配置 Lambda 的环境变量

在 Lambda 的 Configuration 中点击 Environment variables ,配置如下环境变量:

配置完成后如下图所示:

2. 配置飞书开放平台与 Amazon API Gateway 的集成

1、在飞书开放平台中添加或编辑企业自建应用。

2、在权限管理中添加以下权限:

3、在事件与回调中,设置订阅方式为"将事件发送至开发服务器",并添加"接收消息"事件。

3. 订阅 Q Developer Pro 和安装 Q CLI

在本方案中,Q CLI 作为多用户的共用平台,所以必须开通 Pro 版本才不受配额限制。以下是免费版和 Pro 版本对比:

步骤:

1、在亚马逊云科技控制台搜索 Amazon Q Developer,您需要确认右上角的区域为 us-east-1,点击右下角 Get started。

2、设置您的 Profile,Q Developer Profile 本质上是一个管理工具,让管理员可以集中管理和控制 Amazon Q 的使用方式。 您可以修改 Profile name,修改后点击右下角的创建按钮。

3、您会自动进入到 IAM Identity Center,在这里您需要创建用户,通过选择用户-创建用户,您需要填写以下信息:

  • Username:这个也是您后面登录 Q Pro 会用到的信息
  • Email address:输入有效的邮箱地址
  • Display name:由 First name 和 Last name 组成,后面在 Q Developer Pro 中订阅用户会用到

所有信息填写完成后就可以创建用户,显示状态为 Enabled 即为用户创建成功。

4、为 Q Developer Pro 订阅用户,控制台搜索 Q Developer 点击 Subscribe,选择分配用户/组,输入上一步编辑的 Display name,找到用户后选择右下角的添加。添加完成后会看到状态为"不可用",这是因为我们需要进行激活。

5、接受 IAM Identity Center的邀请:您需要登录到注册的邮箱,找到一封标题为"Invitation to join Amazon IAM Identity Center "的邮件,点击接受邀请(Accept invitation),使用刚刚在 IAM Identity Center 设置的 User name,重置密码后点击登录, 注意密码需要满足:8-64个字符,大写和小写字母,数字,非字母数字符。为了安全,您可以设置 MFA 设备,这些步骤做完后您就可以使用 Q Developer Pro 了。

6、激活并使用 Q Pro

a. 安装 Q CLI (本文以 ubuntu 操作系统为例,要在其它操作系统安装 Q CLI 请参考:docs.aws.amazon.com/amazonq/lat...

b. 启动一台 EC2,SSH 登录后执行以下命令:

arduino 复制代码
wget <https://desktop-release.q.us-east-1.amazonaws.com/latest/amazon-q.deb>
sudo apt-get install -f 
sudo dpkg -i amazon-q.deb

c. 执行 q login 后需要选择登录方式和 URL 等信息

登录方式:选择使用 Pro license 登录输入

Start URL: 您可以从订阅的 Q Developer 控制台内找到

输入区域:输入您订阅的区域,您可以从 Q Developer 控制台找到,如下图所示

d. 所有信息输入完后,在控制台回车,会出现一个 URL,复制到浏览器进行打开,浏览器会提示您需要输入注册时的 Username 和密码,以及 MFA 验证数字,输入后点击 sign in 按钮。

e. 登录后点击"Confirm and continue"

f. 接下来您会看到允许 Q CLI 的访问,选择允许访问

g. 可以通过命令行看到登录成功的提示

h. 此时,您可以在命令行输入 q,出现如下画面表示 Q CLI 已成安装并关联 Pro 版本

同时您也可以看到 Q D 的订阅控制台里状态变为 Active

4. 部署 Q CLI 代理服务

Q CLI 代理服务器主要用于接收 Lambda 传输过来的用户问题,然后利用 Q CLI Agent 特性查询亚马逊云科技账号的服务状态、分析故障原因、给出优化建议等。

在整个工作流程中,Q CLI 的特点在于可以执行 Linux 命令、运行 bash 脚本、调用 amazon cli、kubectl 等常用命令行工具或调用 MCP 服务来完成整个任务。本文主要演示如何结合 Amazon CLI 实现多亚马逊云科技账号服务的信息提取和故障分析。

1、配置 Amazon CLI 权限:

  1. 在本账号中创建一个用户并附加 ReadOnlyAccess 的权限策略,包含了几乎所有亚马逊云科技服务的只读访问权限;
  2. 创建该用户的 AK/SK 用于 Amazon CLI;
  3. 安装 Amazon CLI 后,通过 amazon configure -profile 创建 Amazon CLI 的 Profile,并填
  4. 上一步创建的AK/SK 和主要资源所在的 Region;
  5. 如果需要管理多个亚马逊云科技账号,则需要在每个账号中创建用户和 AK/SK 并设置对应的 Profile(也就是重复前面 3 个步骤);
  6. Q CLI 会根据输入分析后决定使用哪一个 Profile 执行 Amazon CLI 命令,所以 Profile 的命名需要有明确的意义,便于 Q CLI 理解。比如:UAT 环境、PROD 环境、日志账号、安全账号等。
r 复制代码
aws configure ---profile uat
aws configure ---profile prod
aws configure ---profile logs
aws configure ---profile security
...

2、部署 Python Flask 程序(Python 版本 3.12)用于和 Lambda 交互。将 python_flask.py 上传到安装好 Q CLI 的 EC2,确保监听端口为 0.0.0.0 并启动程序。

3、代码中的 Prompt 会指示 Q CLI 识别具体使用哪个 Profile 执行 Amazon CLI 命令,另外也可以在这里设置调用其它工具的指示,比如 kubectl、helm,甚至是其它云平台的 CLI 工具。示例 Prompt 模板如下:

objectivec 复制代码
任务描述:
您将收到一段用户的自然语言输入,描述其希望执行的亚马逊云科技相关操作。
您需要根据该输入判断用户的意图,并从以下两个 Amazon CLI 配置文件中选择最合适的一个:
security:用于安全相关的服务,涉及产品关键字包括 WAF、GuardDuty、CloudTrail 等。
networking:用于网络相关的服务,涉及产品关键包括 VPC、Subnet、NAT、安全组等。
logs: 用于存放日志相关的服务,涉及产品关键字包括 Cloudwatch Logs、Audit Log、OpenSearch等。

输出要求:
仅输出最合适的配置文件名称:如:security 或 networking。
示例输入:
"我想查看最近的安全组配置。"

示例输出:
networking

注意事项:
如果用户的输入同时涉及多个领域,请根据主要意图选择最相关的配置文件。
输出必须严格为 security 或 networking,不包含其他文字或解释。
如果没有识别出具体配置文件,请返回 default。

请根据上述要求,处理以下用户输入:
"{user_inputs}"

5. Q CLI 与 MCP Server 集成

Q CLI 可以与不同的 MCP Server 集成实现扩展能力。本文描述了如何集成 Amazon Support MCP Server 来提交和管理工单,以及 Amazon Bedrock Knowledge Bases Retrieval MCP Server 结合知识库来分析服务状态或故障。

安装基础环境:

1、更新并安装 pipx

sudo apt-get update && sudo apt-get install -y pipx

2、下载 ux

curl -fsSL <https://astral.sh/uv/install.sh> | bash

3、确保 Q Developer 的版本在 1.9.0 或以上

q upgrade

Amazon Support MCP Server

使用 Amazon Support MCP 需要当前账户开启Business、Enterprise On-Ramp 或 Enterprise 支持计划,主要可应用到以下两个场景:

1、自动提交 Support 工单:

当通过 Q CLI 获取账号资源状态时,如果发现某些服务资源有异常但无法精确定位根因,可以让 Q CLI 调用 Support MCP 自动提交 Support 工单。Q CLI 可提取服务相关信息,按照如下工单模板自动填充必要信息后生成并提交工单。为了避免自动提交无效工单,可在自动提交工单前加入审批环节。比如,通过飞书 Bot 艾特相关负责人,负责人回复 Approve 后才正式提交工单。

提交工单需要按以下模板提供信息:

  • 主题(subject)- 清晰描述问题的标题
  • 服务代码(service_code)- 与问题相关的亚马逊云科技服务代码,例如 "amazon-elastic-compute-cloud-linux"(适用于 EC2 Linux 问题)
  • 类别代码(category_code)- 问题的类别代码,例如 "using-aws"(使用亚马逊云科技相关问题)
  • 严重级别代码(severity_code)- 问题的严重程度,可选值包括:
  • low(一般指导):一般开发问题或功能请求
  • normal(系统受损):非关键功能异常或时间敏感的开发问题
  • high(生产系统受损):重要功能受损但有解决方法
  • urgent(生产系统宕机):业务受到显著影响且无解决方法
  • critical(业务关键系统宕机):业务面临风险且关键功能不可用
  • 通信正文(communication_body)- 详细描述您的问题

2、查询过往工单内容,找到类似问题的解决方案。

安装和使用:

1、执行如下命令,在 mcp.json 中加入配置

javascript 复制代码
pipx install awslabs.bedrock-kb-retrieval-mcp-server

vim ~/.aws/amazonq/mcp.json
{
   "mcpServers": {
      "awslabs_support_mcp_server": {
         "command": "uvx",
         "args": [
            "-m", "awslabs.aws-support-mcp-server@latest",
            "--debug",
            "--log-file",
            "./logs/mcp_support_server.log"
         ],
         "env": {
            "AWS_PROFILE": "your-aws-profile"
         }
      }
   }
}

2、重新输入 q 后,可以看到 MCP Server 和 MCP 相关 Tools 都关联成功

Amazon Bedrock Knowledge Bases Retrieval MCP Server

安装和使用:

1、执行如下命令,在 mcp.json 文件的 "mcpServers" 节点下加入配置

javascript 复制代码
pipx install awslabs.bedrock-kb-retrieval-mcp-server
vim ~/.aws/amazonq/mcp.json
"awslabs.bedrock-kb-retrieval-mcp-server": {
      "command": "awslabs.bedrock-kb-retrieval-mcp-server",
      "args": [],
      "env": {
        "AWS_PROFILE": "default",
        "AWS_REGION": "us-east-1",
        "FASTMCP_LOG_LEVEL": "DEBUG",
        "BEDROCK_KB_RERANKING_ENABLED": "false",
      "KB_INCLUSION_TAG_KEY": "mcp-multirag-kb"
      },
      "disabled": false,
      "autoApprove": ["QueryKnowledgeBases"]
    }

注:

(1)以上配置文件中 Profile 为 default,您需要保证此处的 Profile 所关联的 AK/SK 具有以下操作权限 :

复制代码
 bedrock-agent:Retrieve - 查询知识库的核心权限
 bedrock-agent:ListKnowledgeBases - 列出可用知识库的权限
 以及对特定知识库的访问权限

(2)区域必须为 Amazon Bedrock 支持的区域。

(3)如果启用重排序功能,仅支持以下区域:us-west-2,us-east-1,ap-northeast-1 以及 ca-central-1。

(4)配置完成后重新输入 q,就可以看到 bedrock_kb_retrieval_mcp_server 关联成功。

(5)bedrock_kb_retrieval_mcp_server 核心服务: QueryKnowledgeBases

将 QueryKnowledgeBases 定义为 MCP 工具:

python 复制代码
@mcp.tool(name='QueryKnowledgeBases')
async def query_knowledge_bases_tool(
    query: str = Field(...),
    knowledge_base_id: str = Field(...),
    number_of_results: int = Field(10),
    reranking: bool = Field(kb_reranking_enabled),
    # 其他参数...
):
    # 函数实现...

此工具函数内部会调用 query_knowledge_base 函数:

ini 复制代码
result = await query_knowledge_base(
    query=query,
    knowledge_base_id=knowledge_base_id,
    kb_agent_client=kb_agent_client,
    number_of_results=number_of_results,
    reranking=reranking,
    # 其他参数...
)

query_knowledge_base 函数会执行以下步骤:

  1. 检查区域是否支持重排序(如果启用)
  2. 构建检索请求配置:
  3. 如果提供了 data_source_ids,添加过滤器
  4. 如果启用了重排序,添加重排序配置
  5. 调用 Bedrock Agent Runtime 的 retrieve API:
ini 复制代码
response = kb_agent_client.retrieve(
    knowledgeBaseId=knowledge_base_id,
    retrievalQuery={'text': query},
    retrievalConfiguration=retrieve_request,
)
  1. 处理响应结果,提取文档内容 7. 返回格式化的结果

以下是在 Q CLI 中使用 bedrock_kb_retrieval_mcp_server 工具,根据内部运维知识库中定义的各项 SLA 指标进行检索,对比当前系统的指标是否符合要求。

比如:查询知识库,告诉我公司内部关于 Test 项目 Bedrock 模型调用延迟参数的定义信息

可以看到 bedrock_kb_retrieval_mcp_server 工具可以召回知识库里的相关信息

效果演示

  1. 通过 AT 机器人发起会话,机器人回复到单独的对话线程,避免消息过多打扰群内其他成员。
  2. 通过设置分段回复,避免用户长时间等待反馈信息,提升用户体验。

总结

综上所述,本文以 Amazon Q Developer CLI 与 IM 工具(如飞书)的集成为例,展示了如何构建一个对话式的 AI Agent 运维平台,实现传统运维流程的智能化升级。通过接入自定义的 MCP Server,不仅扩展了 Q Developer 的能力边界,更为企业带来了更高效、更智能的运维体验。生成式 AI 不再只是技术趋势,而是可以实实在在落地、提升工作效率的工具。希望本文的示例能够为读者在自身业务场景中的运维自动化提供启发,借助 Amazon Bedrock、Q Developer 等服务,打造符合自身需求的 AI 运维解决方案,真正迈入智能运维的新阶段。

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

参考资料

本文涉及代码的 Github 地址:github.com/JustinTanCQ...

Amazon Q Developer 详细介绍:aws.amazon.com/cn/q/develo...

亚马逊云科技官方 MCP 库:github.com/awslabs/mcp

本篇作者

本期最新实验为《Agentic AI 帮你做应用 ------ 从0到1打造自己的智能番茄钟

✨ 自然语言玩转命令行,10分钟帮你构建应用,1小时搞定新功能拓展、测试优化、文档注释和部署

💪 免费体验企业级 AI 开发工具,质量+安全全掌控

⏩️[点击进入实验] 即刻开启 AI 开发之旅

构建无限, 探索启程!

相关推荐
深兰科技30 分钟前
深兰科技:搬迁公告,我们搬家了
javascript·人工智能·python·科技·typescript·laravel·深兰科技
有点不太正常1 小时前
《Password Guessing Using Large Language Models》——论文阅读
人工智能·语言模型·自然语言处理·密码学
lxmyzzs1 小时前
【图像算法 - 23】工业应用:基于深度学习YOLO12与OpenCV的仪器仪表智能识别系统
人工智能·深度学习·opencv·算法·计算机视觉·图像算法·仪器仪表识别
Learn Beyond Limits1 小时前
Multi-output Classification and Multi-label Classification|多输出分类和多标签分类
人工智能·深度学习·神经网络·算法·机器学习·分类·吴恩达
嘀咕博客2 小时前
超级助理:百度智能云发布的AI助理应用
人工智能·百度·ai工具
张子夜 iiii2 小时前
深度学习-----《PyTorch神经网络高效训练与测试:优化器对比、激活函数优化及实战技巧》
人工智能·pytorch·深度学习
小星星爱分享2 小时前
抖音多账号运营新范式:巨推AI如何解锁流量矩阵的商业密码
人工智能·线性代数·矩阵
aneasystone本尊2 小时前
剖析 GraphRAG 的项目结构
人工智能
AI 嗯啦2 小时前
计算机视觉--opencv(代码详细教程)(三)--图像形态学
人工智能·opencv·计算机视觉
鱼香l肉丝2 小时前
第四章-RAG知识库进阶
人工智能