使用Amazon Bedrock AgentCore Runtime将AWS API MCP Server与Amazon Quick集成

TL;DR · AI 摘要
本文展示了如何通过Amazon Bedrock AgentCore Runtime和MCP将Amazon Quick与AWS服务集成,实现自然语言到AWS CLI命令的转换,减少工具切换和手动操作。
核心要点
- Bedrock AgentCore Runtime结合MCP可将自然语言查询转换为AWS CLI命令,无需手动切换工具或记忆API语法。
- 流程通过Cognito OAuth 2.0认证和IAM权限控制,审计日志由CloudWatch自动记录,确保安全合规。
- 需AWS账户、Quick Enterprise订阅及Marketplace MCP Server,单用户每月约500查询成本约$X(具体数值需原文补充)
结构提纲
按章节快速跳转。
思维导图
用一张图看清主题之间的关系。
查看大纲文本(无障碍 / 无 JS 友好)
- AWS服务集成方案
- 技术组件
- Bedrock AgentCore Runtime
- MCP协议
- Amazon Quick
- 安全认证
- Cognito OAuth 2.0
- IAM权限控制
- 工作流程
- 自然语言解析
- API命令转换
金句 / Highlights
值得收藏与分享的关键句。
自然语言查询直接转化为AWS API调用,无需切换工具或记忆API语法。
审计日志通过Amazon CloudWatch自动记录,满足安全合规要求。
单用户每月约500查询成本约$X(具体数值需原文补充)。
标题:使用 Amazon Bedrock AgentCore Runtime 将 AWS API MCP 服务器与 Amazon Quick 集成 | Amazon Web Services
来源 URL:https://aws.amazon.com/blogs/machine-learning/integrating-aws-api-mcp-server-with-amazon-quick-suite-using-amazon-bedrock-agentcore-runtime/
发布时间:2026-05-21T08:32:09-08:00
随着 AWS 基础设施的扩展,运维工作流会自然变得更为复杂。SRE 和 DevOps 工程师需要在 AWS 管理控制台、CLI 文档以及多个服务仪表盘之间频繁切换,手动将业务问题转化为正确的 API 语法,跨服务串联 API 调用,并为每个新用例重复构建相同的集成模式。这种摩擦会随着时间的推移而累积。故障排查需要在 Amazon CloudWatch 日志、Amazon Elastic Compute Cloud (Amazon EC2) 实例状态和 AWS Identity and Access Management (IAM) 策略之间交叉引用多个界面。容量规划需要手动查询多个服务并整合结果。安全审计需要编写耗时的脚本,以生成一致且可重复的 API 调用序列。
本文将演示如何使用 Amazon Bedrock AgentCore Runtime(支持 Model Context Protocol (MCP))通过 AWS API MCP Server 将 Amazon Quick 与 AWS 服务连接,创建一个能够将自然语言直接转换为 AWS 命令行界面 (AWS CLI) 命令的对话式 AI 助手,且无需在关键时刻在工具之间来回切换。
**解决方案概述**
借助 Amazon Bedrock AgentCore Runtime 和 MCP 支持,自然语言查询可直接转换为 AWS API 调用。您可以提问“显示 us-east-1 区域内所有正在运行的 EC2 实例”,并立即获得准确结果,无需在工具间切换或记忆 API 语法。您的请求会基于现有的 IAM 权限安全执行,并通过完整的 Amazon CloudWatch 审计日志满足合规性要求。您无需为每个工作流重复构建连接逻辑,而是可以通过单一可复用的集成标准化 AI 代理与 AWS 服务的交互方式。下图展示了 Amazon Bedrock AgentCore Runtime 如何通过 AWS API MCP Server 将 Amazon Quick 连接到 AWS 服务。

日常操作的工作原理:
- 以自然语言提问:例如,“显示 us-east-1 区域内正在运行的 EC2 实例”。
- Amazon Quick 自定义代理解析意图。
- Amazon Cognito 验证请求:Quick 使用您配置的 Client ID 和 Client Secret,通过 OAuth 2.0 客户端凭证流程,从您的 Amazon Cognito 用户池获取 JWT 令牌。
- 代理连接 AWS API MCP Server:经过身份验证的请求到达 Amazon Bedrock AgentCore Runtime,后者会将 JWT 令牌与您的 Cognito 身份提供商配置进行比对验证。
- AgentCore Runtime 授权并路由请求:验证 Cognito 令牌后,AgentCore Runtime 会安全调用容器化环境中运行的 AWS API MCP Server。
- MCP 服务器转换请求:将您的自然语言查询转换为对应的 AWS CLI 命令。
- AWS 服务执行命令:命令通过您配置的 IAM 执行角色以最小权限运行。
- 返回可读结果:无需 CLI 语法。您将在 Quick 界面直接获得结构化、可读的结果。
**前提条件**
您需要满足以下要求才能跟随本文操作:
账户和访问权限要求:
- 具有管理权限的 AWS 账户
- Amazon Quick 企业订阅(至少专业版)
- 访问 AWS Marketplace – AWS API MCP Server
- 创建以下资源的 IAM 权限:
- Amazon Cognito 用户池
- IAM 角色和策略
- Amazon Bedrock AgentCore Runtime 代理
- Amazon CloudWatch 日志组
所需软件和工具:
- 已安装并配置的 AWS CLI(用于操作指南中的 URL 编码步骤)
所需知识和技能:
- 对 IAM 角色和策略的基本理解(已列出)
- 熟悉 OAuth 2.0 身份验证流程
- 了解 JWT(JSON Web Token)概念
其他信息:
- 预计完成时间:30–45 分钟
- 预计每月成本:对于每月运行约 500 次查询的单个企业用户,预计费用约为每月 292 美元,主要由 Amazon Quick 企业订阅(40 美元/用户/月)和基础设施费用(250 美元/账户/月)驱动。
**部署解决方案**
**手动部署**
要实施该解决方案,请按以下步骤操作:
- 设置 Amazon Cognito 用户池 – 用于身份验证。
- 创建 IAM 角色 – 用于授权。
- 创建 Amazon Bedrock AgentCore Runtime 代理。
- 在 Amazon Quick 中配置 AWS API MCP Server 的集成。
- 在 Amazon Quick 中创建自定义聊天代理。
本文中的部分截图可能与您的 AWS 管理控制台界面布局略有不同。
**设置 Amazon Cognito 用户池**
Amazon Cognito 为您的应用程序提供身份验证和授权功能。在此解决方案中,您需要配置 Cognito 用户池以生成 JWT 令牌,用于对 Amazon Bedrock AgentCore Runtime 的请求进行身份验证。通过 Amazon Cognito 的 JWT 认证,您可以在 CreateAgentRuntime 操作中配置授权方(authorizer),指定您的身份提供商(IdP)特定的发现 URL 和允许的客户端。您的现有代理代码无需修改。只需在运行时部署中添加授权方配置。当调用实体或用户调用您的代理时,他们需要将 IdP 特定的访问令牌作为承载令牌(bearer token)传递到 Authorization 标头中。AgentCore Runtime 会通过 AgentCore Identity 自动验证该令牌是否符合配置的授权方,并拒绝未经授权的请求。
在以下示例截图中,使用唯一的应用程序名称和 Machine-to-machine application(机器对机器应用程序)类型创建用于 JWT 认证的 Amazon Cognito 用户池。为应用程序命名后,选择 创建用户目录。
当使用机器对机器应用程序创建 Cognito 用户池时,Amazon Cognito 会自动为您的应用程序创建资源服务器。该资源服务器定义了自定义 OAuth 2.0 范围(scopes),用于指定应用程序可请求的权限。


在新创建的用户池菜单中,导航到 品牌设置 并选择 域。选择创建的资源服务器并点击 编辑,为自定义范围添加写入权限(write scope),并更新读取(read)和写入(write)权限的描述。

读取和写入权限控制对 AWS API MCP Server 的访问:
- 读取权限(Read scope) – 允许应用程序查询 AWS 资源(例如列出 EC2 实例或描述 Amazon S3 存储桶)。
- 写入权限(Write scope) – 允许应用程序修改 AWS 资源(例如创建资源或更新配置)。
这些权限范围映射到 MCP 服务器在代表经过身份验证的请求执行 AWS CLI 命令时使用的 IAM 权限。
创建 IAM 角色
要在 Amazon Bedrock AgentCore Runtime 中运行代理或工具,您需要一个 IAM 执行角色。有关创建 IAM 角色的更多信息,请参阅 IAM 角色创建。
为 Amazon Bedrock AgentCore Runtime 创建所需的信任策略(trust policy)和执行角色(execution role)。如需更多详细信息,请参阅 AgentCore Runtime 的 IAM 权限。将以下代码中的 YOUR_ACCOUNR_ID 替换为您的 AWS 账户 ID。
以下是 AgentCore Runtime 的信任策略代码:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AssumeRolePolicy",
"Effect": "Allow",
"Principal": {
"Service": "bedrock-agentcore.amazonaws.com"
},
"Action": "sts:AssumeRole",
"Condition": {
"StringEquals": {
"aws:SourceAccount": "YOUR_ACCOUNT_ID"
},
"ArnLike": {
"aws:SourceArn": "arn:aws:bedrock-agentcore:*:YOUR_ACCOUNT_ID:*"
}
}
}
]
}AgentCore Runtime 执行角色
以下 IAM 策略为您的执行角色授予拉取 AWS API MCP Server 容器镜像以及写入运行时日志所需的权限。该容器镜像托管在 AWS 管理的公共 Amazon Elastic Container Registry (Amazon ECR) 存储库中,您无需自行构建或维护镜像。
要获取最新的容器 URI,请访问:AWS Marketplace – AWS API MCP Server。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "ECRImageAccess",
"Effect": "Allow",
"Action": [
"ecr:BatchGetImage",
"ecr:GetDownloadUrlForLayer"
],
"Resource": [
"arn:aws:ecr:us-east-1:709825985650:repository/*"
]
},
{
"Effect": "Allow",
"Action": [
"logs:DescribeLogStreams",
"logs:CreateLogGroup"
],
"Resource": [
"arn:aws:logs:us-east-1:YOUR_ACCOUNT_ID:log-group:/aws/bedrock-agentcore/runtimes/*"
]
},
{
"Effect": "Allow",
"Action": [
"logs:DescribeLogGroups"
],
"Resource": [
"arn:aws:logs:us-east-1:YOUR_ACCOUNT_ID:log-group:*"
]
},
{
"Effect": "Allow",
"Action": [
"logs:CreateLogStream",
"logs:PutLogEvents"
],
"Resource": [
"arn:aws:logs:us-east-1:YOUR_ACCOUNT_ID:log-group:/aws/bedrock-agentcore/runtimes/*:log-stream:*"
]
},
{
"Sid": "ECRTokenAccess",
"Effect": "Allow",
"Action": [
"ecr:GetAuthorizationToken"
],
"Resource": "*"
},
{
"Effect": "Allow",
"Action": [
"xray:PutTraceSegments",
"xray:PutTelemetryRecords",
"xray:GetSamplingRules",
"xray:GetSamplingTargets"
],
"Resource": [ "*" ]
},
{
"Effect": "Allow",
"Resource": "*",
"Action": "cloudwatch:PutMetricData",
"Condition": {
"StringEquals": {
"cloudwatch:namespace": "bedrock-agentcore"
}
}
},
{
"Sid": "GetAgentAccessToken",
"Effect": "Allow",
"Action": [
"bedrock-agentcore:GetWorkloadAccessToken",
"bedrock-agentcore:GetWorkloadAccessTokenForJWT",
"bedrock-agentcore:GetWorkloadAccessTokenForUserId"
],
"Resource": [
"arn:aws:bedrock-agentcore:us-east-1:YOUR_ACCOUNT_ID:workload-identity-directory/default",
"arn:aws:bedrock-agentcore:us-east-1:YOUR_ACCOUNT_ID:workload-identity-directory/default/workload-identity/*"
]
}
]
}CSS
为角色附加特定权限,定义其可执行的操作。此示例使用受限只读策略,授予对所有存储桶的s3:ListBucket和s3:GetObject权限。此范围仅用于初始探索,实际生产环境需遵循最小权限原则。
注意: 使用通配符资源(arn:aws:s3:::*)将授予访问账户内所有S3存储桶的权限。此配置仅适用于初始设置和测试。部署生产环境前,请替换为具体存储桶ARN:
"Resource": [
"arn:aws:s3:::your-specific-bucket",
"arn:aws:s3:::your-specific-bucket/*"
]Code
示例角色:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:ListBucket",
"s3:GetObject"
],
"Resource": [
"arn:aws:s3:::*"
]
},
{
"Effect": "Allow",
"Action": [
"ec2:DescribeInstances",
"ec2:DescribeImages"
],
"Resource": "*",
"Condition": {
"StringEquals": {
"ec2:Region": "us-east-1"
}
}
}
]
}CSS
创建Amazon Bedrock AgentCore运行时代理
从Amazon AgentCore菜单中选择运行时,然后选择主机/代理工具。为运行时代理提供唯一名称。在代理来源中选择ECR容器选项,并输入来自AWS Marketplace的镜像URI。

在同一页面的权限部分,选择前一步创建的现有角色。

在页面的入站身份验证部分,选择MCP协议和JWT令牌作为验证类型。对于JWT配置,使用现有的身份提供商配置(即第一步创建的Cognito身份池)。

从Cognito用户池信息中获取发现URL。查找令牌签名密钥URL,其格式为:https://cognito-idp.$REGION.amazonaws.com/$POOL_ID/.well-known/jwks.json
将jwks.json替换为openid-configuration。最终URL示例如下:
https://cognito-idp.us-east-1.amazonaws.com/us-east-1_ev5CwXjma/.well-known/openid-configuration
在Cognito用户池的App Client部分添加允许客户端。选择左侧面板的App Client,复制应用客户端信息中的客户端ID,并将其添加到允许客户端列表。
配置AgentCore运行时部署的高级设置。在高级配置中,保持默认网络模式为公共,以便初始设置和测试期间可通过互联网访问运行时。
生产环境部署 选择 VPC 选项以将网络访问限制在私有、受控的环境中。这是处理敏感数据或需要网络隔离的工作负载的推荐方案。接下来,按照下文添加环境变量,然后选择 创建代理。
AUTH_TYPE: “no-auth”AWS_API_MCP_HOST: “0.0.0.0”AWS_API_MCP_PORT: “8000”AWS_API_MCP_STATELESS_HTTP: “true”AWS_API_MCP_TRANSPORT: “streamable-http”AWS_API_MCP_ALLOWED_HOSTS= “*”AWS_API_MCP_ALLOWED_ORIGINS= “*”
理解 AgentCore 中的 AWS API 认证
变量 | 说明 ---|--- AWS_API_MCP_TRANSPORT | 为 MCP 通信设置可流式传输的 HTTP 协议。 AWS_API_MCP_STATELESS_HTTP | 启用无状态 HTTP 模式,这是 streamable-http 传输的必需配置。 AWS_API_MCP_PORT | MCP 服务器监听传入请求的端口。 AWS_API_MCP_HOST | 将服务器绑定到容器内的可用网络接口。 AWS_API_MCP_ALLOWED_ORIGINS | 允许来自任何来源的请求。在 AgentCore 运行时受控的执行环境中是安全的。 AWS_API_MCP_ALLOWED_HOSTS | 允许来自任何主机的请求。受限于 AgentCore 运行时强制实施的容器网络边界。 AUTH_TYPE | 禁用 MCP 服务器级别的认证。认证由 AgentCore 运行时通过 JWT 令牌验证处理。如需更多信息,请参阅以下安全说明。
AUTH_TYPE 设置为 no-auth 是因为 MCP 服务器本身不执行认证。通过 Amazon Bedrock AgentCore 运行时部署时,这是有意为之且安全的。AgentCore 运行时充当安全边界:在请求到达您的 MCP 服务器容器之前,它会强制执行 JWT 令牌验证。它使用 AgentCore Identity 的公钥验证加密签名,验证令牌声明(颁发者、受众、过期时间),并拒绝未提供有效 OAuth 2.0 持有者令牌的请求。换句话说,MCP 服务器信任 AgentCore 运行时已对调用方完成认证。这与 API 网关后方的内部微服务采用的模式一致,服务本身无需重新认证,因为网关已处理过。
注意: 如果在 AgentCore 运行时外部运行此 MCP 服务器(例如直接在 EC2 实例或作为独立容器),请勿使用 AUTH_TYPE: no-auth。这种情况下,服务器将暴露在无认证层的环境中。
AWS_API_MCP_ALLOWED_HOSTS 和 AWS_API_MCP_ALLOWED_ORIGINS 的通配符值(*)在此教程中被有意设置为宽松。在生产环境中,请替换为工作负载所需的特定主机名和来源,以实施最小权限网络访问。
在 Amazon Quick 中创建自定义聊天代理
现在 AWS API MCP 服务器已在 Amazon Bedrock AgentCore 运行时中运行,接下来在 Amazon Quick 中创建一个可通过自然语言交互执行 AWS CLI 命令的自定义聊天代理。
导航到 Amazon Quick 控制台,进入集成设置。在左侧导航栏中选择 集成,然后选择 操作。添加 MCP 协议集成,以连接 Amazon Quick 与托管在 Amazon Bedrock AgentCore 运行时中的 MCP 服务器。
配置集成详情时,输入元数据。为集成提供一个描述性名称,并添加清晰的说明,说明该集成的用途。

在端点配置中,获取您的 Amazon Bedrock AgentCore 运行时 ARN。导航到代理的 工具详细信息 部分,从 运行时 部分复制运行时 ARN。
ARN 格式示例:
arn:aws:bedrock-agentcore:us-east-1:123456789123:runtime/demoagent-LmNop08QoR
端点 URL 需按以下格式构建,替换为您的 AWS 区域,并通过步骤生成编码后的 ARN:
https://bedrock-agentcore.{region}.amazonaws.com/runtimes/{url-encoded-arn}/invocations?qualifier=DEFAULT
生成 URL 编码的 ARN,可在终端运行以下命令:
echo "YOUR_ARN" | sed 's/:/%3A/g; s/\//%2F/g'
Bash
[System.Uri]::EscapeDataString("YOUR_ARN")
PowerShell
注意: Bash 命令需要 Linux、macOS 或安装了 WSL(Windows 子系统 for Linux)的 Windows 系统。Windows PowerShell 命令原生支持无需额外依赖。最后保持启用自动发布选项。为确保 Amazon Quick 与 MCP 服务器之间的安全通信,请使用 Amazon Cognito 用户池凭据配置服务认证。
注意: Amazon Cognito 是一项完全托管的 AWS 身份服务,可处理应用程序的认证和授权。客户端密钥在静态存储和传输过程中均加密存储,且凭证不会以明文形式传输。Cognito 还支持按需客户端密钥轮换,允许每个应用客户端同时维护两个活跃密钥,实现零停机轮换。
在身份验证设置页面中选择 服务认证 作为认证方法。
查找客户端 ID 和客户端密钥的步骤:
- 打开 Amazon Cognito 控制台。
- 选择 用户池,然后选择您的用户池。
- 在左侧导航栏中选择 应用客户端(位于 应用程序 下)。
- 选择您的应用客户端。该页面直接显示 应用客户端 ID。
- 选择 显示客户端密钥 以查看 应用客户端密钥。
注意: 将客户端密钥视为密码对待。在生产环境中,使用AWS Secrets Manager安全存储密钥。不要将其嵌入客户端代码或版本控制系统中。
对于Token URL,需根据您的用户池域名进行构造:
- 在用户池左侧导航栏中,向下滚动至品牌标识部分。
- 选择域名。此处会显示您的Cognito域名,格式为:
https://your-domain.auth.region.amazoncognito.com - 在该域名末尾追加
/oauth2/token,形成完整的令牌端点:https://your-domain.auth.region.amazoncognito.com/oauth2/token
输入客户端ID、客户端密钥和Token URL后,选择创建并继续。

注意: 在Amazon Quick中,您的凭证会通过AWS密钥管理服务(AWS KMS)进行加密。默认情况下,Quick使用服务托管的AWS KMS密钥来加密数据源凭证和OAuth令牌。对于合规要求更严格的组织,账户管理员可配置客户托管密钥,以完全控制加密密钥的生命周期(包括即时撤销访问权限和维护可审计的凭证访问日志)。
接下来设置此操作的共享偏好。选择是否与其他团队成员共享该操作并配置相应的访问权限。选择完成,并验证该操作是否出现在操作部分。
现在我们将构建一个能够将自然语言转换为AWS CLI命令的对话代理。进入Amazon Quick控制台的代理创建界面,在左侧面板选择自定义代理,然后选择创建聊天代理。
使用以下描述性提示配置代理:
提示: 创建一个对话代理,允许用户通过自然语言执行AWS CLI命令。通过aws-api-mcp连接器将用户请求转换为相应的AWS API调用。
Amazon Quick会根据您的提示自动检测并选择对应的MCP连接器。确认代理关联了正确的集成后,选择启动代理以进行测试准备。

自动化部署
如需自动化部署,请按照GitHub中的说明,在Amazon Bedrock Runtime部署AWS API MCP服务器。此外,如需部署Cognito用户池和应用客户端,请参考AWS文档附录部分中的**为身份验证设置Cognito用户池**说明。
最后,如需设置Amazon Quick与AWS API MCP服务器的集成,请按照在Amazon Quick中创建自定义聊天代理章节中的步骤操作。
验证解决方案
要验证自定义聊天代理的功能,请访问新创建的自定义聊天代理的聊天界面,并测试自然语言指令:
提示: 显示us-east-1区域中正在运行的EC2实例。

清理资源
为避免产生持续费用,请清理本方案中创建的资源:
- 删除Amazon Quick资源:移除启用的Amazon Quick功能,包括自定义聊天代理、空间和流程。
- 移除MCP集成:删除在Amazon Quick中创建的MCP操作。
- 清理Amazon Bedrock资源:删除Amazon Bedrock AgentCore代理及其关联的IAM执行角色。
- 删除Amazon Cognito用户池:最后移除用于身份验证的Cognito用户池。
结论
在这篇博文中,您学习了如何通过Amazon Bedrock AgentCore Runtime和AWS API MCP Server将Amazon Quick与AWS服务连接。通过标准化AI代理与基础设施的交互方式,可以避免为每个新用例重复构建自定义集成模式。
接下来,您可以扩展此模式以自动化常见运维查询,或构建特定领域的代理(如安全、成本优化或容量规划),并通过Amazon Quick流程和Amazon Quick Automate集成事件管理流程。这为大规模管理AWS基础设施提供了更一致、更安全、更高效的方式。
- * *