展示如何在Bedrock AgentCore上用MCP服务器实现开发环境到生产环境的资源自动化迁移,具备幂等性和审计能力。
Amazon Quick 是亚马逊为工作场景打造的 Agentic AI 助手。用户构建的 Agent 能够对数据进行分析、调用操作连接器、完成多步骤任务。将这些资源(聊天 Agent、操作连接器、知识库、Flow 和 Space)从开发环境 AWS 账号推广到生产环境——就像部署其他应用一样——以往一直是一项需要人工介入、容易出错的繁琐工作。本文将展示如何通过一个基于 Amazon Bedrock AgentCore 托管的幂等、可审计的 Model Context Protocol(MCP)服务器来实现自动化。
Agentic 解决方案的构建块包括 Agent、操作连接器、知识库和 Space:聊天 Agent 配备自定义指令,用于 Slack、Jira 等系统的连接器、基于自有文档的知识库,以及将它们绑定在一起的 Space。团队在开发账号中快速组装和迭代这些组件。
大多数企业会为开发和生产环境运行独立的 AWS 账号,有时中间还会设置质量保证(QA)环境。当 Agent、操作连接器和知识库在开发账号中验证完成后,并没有原生的一键方式将它们推广到下一个账号。团队只能手动重建每个资源:手动重建每个 Agent(保留相同的指令和启动提示词)、重新挂载每个 Agent 的操作连接器、重新授予资源权限、重新配置每个知识库背后的 Amazon Simple Storage Service(Amazon S3)存储桶、存储桶策略和数据源。这项工作进展缓慢、难以审计,而且很容易出现细微错误,这些都削弱了企业所需的治理能力。
Amazon Quick 资源是可编程的。Space、Agent、操作连接器、知识库和 Flow 都通过 Amazon Quick API(属于 Amazon QuickSight API 范畴)进行管理,提供完整的资源生命周期操作——创建、读取、更新、删除和列表。用户通过 Amazon Quick 配置的任何内容——带有指令和启动提示词的 Agent、连接器、知识库或 Flow——都可以通过编程方式进行检测、重建、更新和治理,包括权限在内。
这一可编程接口使受治理的推广成为可能。无需手动重建每个资源,只需通过 API 读取资源及其权限,然后原样重新应用到另一个账号中。本文中的迁移工具将创建、读取、更新和列表操作组合成一个可重复的工作流,并且永远不会对目标环境执行删除操作,因此每次运行只会新增或更新。
本文将介绍 Quick Resource Migrator——一个托管在 Amazon Bedrock AgentCore 运行时上的示例 MCP 服务器,能够在单次工具调用中自动完成 Amazon Quick 资源的跨账号推广。它是资源驱动的:用户选择一个资源类型(Agent、连接器、知识库、Flow 或 Space),并通过 ID、名称或"全部"进行选择。它是幂等的(可以安全地重复运行),并通过描述源资源并在与目标环境重放相同操作来忠实地复制权限。完整源代码可在 aws-samples 代码库中获取。
迁移工具在单次调用中推广选定的资源集。它是一个 upsert 操作:目标环境中不存在的资源会被创建,已存在的资源会被原地更新。每次更新都会受到版本化备份的保护——变更前会先写入 Amazon S3,因此每个资源都保留了可供审查和回滚的完整历史。只读预览功能会在提交前报告运行将创建或更新的确切内容,迁移本身在 Amazon Bedrock AgentCore 上运行,因此可以通过 Amazon Quick 或任何兼容 MCP 的客户端来驱动。
资源类型迁移说明:
资源驱动的选择: 一次迁移一种资源类型(Agent、连接器、知识库、Flow 或 Space),通过 ID、名称或"全部"进行选择。Agent 重新创建时会重新挂载其操作连接器。Space 重新创建时会重新关联其 Agent、连接器和知识库,ARN 重新映射到目标账号。
权限保真: 权限不是硬编码的。服务器对每个源资源调用相应的 Describe*Permissions API,并在目标环境中重放相同的操作列表,同时将主体重新映射到目标账号中已注册的用户。
幂等性: 每个资源都是创建或更新操作。服务器先描述目标环境,再决定是创建还是更新,因此重复运行迁移会收敛到相同的状态,而不会产生重复或失败。
最小权限和隔离: 源角色是只读的。目标角色仅持有迁移所需的操作。运行时通过 Cognito JSON Web Token(JWT)对调用者进行身份验证,并且可以运行在 VPC 网络模式下。
安全、可逆的更新: 在迁移工具更新任何现有目标资源之前,它会将该资源及其依赖项的版本化快照写入专用的备份存储桶。如果无法写入该备份,更新将被中止。每个创建或更新的资源也会被快照,restore 工具可以将任何资源回滚到早期版本。
该解决方案采用三账号模型。一个中央运行器账号在 Amazon Bedrock AgentCore 运行时上托管 MCP 服务器。服务器使用 AWS Security Token Service(AWS STS)担任源账号中的只读角色和目标账号中的读写角色,因此不会在任何地方存储长期凭证。
图 1:Amazon Quick Resource Migrator MCP 服务器架构
表 1:架构组件
| 组件 | 职责 |
|---|---|
| 资源解析 | 根据资源类型和选择器(ID、名称或全部)解析源账号中的具体资源 ID |
| 描述源 | 描述每个选定的资源以捕获其配置和权限 |
| 连接器 | 重新创建每个连接器。认证配置被清理为创建(写入)模型,使用占位符密钥,然后在目标环境中重新认证。复制权限。 |
| 知识库 | 创建目标存储桶(knowledge-base-<env>-<account>)、存储桶策略、数据源和知识库,然后复制知识库权限。S3 对象不会被复制。 |
| Agent | 使用其操作连接器(重新映射到目标账号)重新创建每个 Agent,然后复制 Agent 权限。当 Space 本身被迁移时,Agent 到 Space 的关联会被恢复(见 Space 步骤)。 |
| Flow | 根据其定义重新创建每个 Flow,按名称匹配(Flow ID 在不同账号间不同):更新同名的目标 Flow 或创建新 Flow,然后复制 Flow 权限。 |
| Space | 重新创建每个 Space,并使用重新映射到目标账号的 ARN 重新关联其 Agent、连接器和知识库(先迁移这些资源),然后复制 Space 权限。 |
| 报告 | 返回创建或更新的资源、存储桶、备份、跳过的权限以及任何错误的 JSON 报告。 |
服务器暴露了五个工具,全部在 server.py 中定义。
preview_migration(只读)
preview_migration 接受源账号 ID、资源类型(Agent、连接器、知识库、Flow、Space 或全部)、选择器(ID、名称或全部)和 AWS 区域。它返回将被迁移的 Agent、操作连接器、知识库和 Flow 的清单,包含名称和类型,但不进行任何变更。将其作为试运行来确认范围,并在推广前支持变更管理审批步骤。当用户同时传入目标账号 ID 时,响应会增加源到目标的映射,标记每个资源为 CREATE 或 UPDATE,这样用户可以看到迁移运行前会发生什么变化。
migrate_resources(完整迁移)
migrate_resources 接受源和目标账号 ID、资源类型(Agent、连接器、知识库、Flow 或 Space)、选择器(ID、名称或全部)、区域、源和目标环境名称(用于知识库存储桶名称)以及 QuickSight 服务角色名称。它执行上述完整的创建或更新迁移,并返回所创建、更新和授予的所有内容的结构化报告,以及任何错误。因为它是幂等的,所以可以重复运行,例如在每次发布时运行,它会收敛到相同的目标状态。
list_backups(只读)
list_backups 搜索备份目录并列出每个资产可用的版本。备份是迁移工具写入备份存储桶的更新前快照,每次更新一个版本化对象,因此用户可以查看任何已迁移资源的完整历史。
get_backup(只读)
get_backup 返回给定资产和版本(默认为最新)的完整存储备份,包括捕获的资源配置及其依赖项。
restore_backup
restore_backup 将存储的备份版本重新应用到目标资源,原地更新,如果资源已不存在则重新创建。它首先获取一个新的预还原备份,因此回滚本身也是可逆的。
完整源代码和分步部署说明位于 aws-samples 代码库的 README 中。从高层来看,你需要部署三个 AWS CloudFormation 堆栈——跨账号 AWS Identity and Access Management(IAM)角色、VPC 网络和托管 MCP 服务器的 Cognito 身份验证的 AgentCore 运行时,然后将这个运行时在 Amazon Quick 中注册为操作连接器。
通过将运行时注册为操作连接器,可以通过自然语言从 Amazon Quick 驱动迁移工具,你也可以构建一个 Quick App:一个基于相同 MCP 工具的分点式 Web 体验。你不需要手动构建该 UI。代码库包含一个现成的 app-builder 提示词,你将其粘贴到 Amazon Quick app builder 中,将占位符连接器和操作 ID 替换为你自己的,以生成 app。该 app 将工作流转换为引导式流程:选择源账号和目标账号以及要推广的资源、预览将创建或更新的内容、运行迁移,并查看每次过去迁移的历史——每次都有服务器写入的版本化 S3 快照作为后盾。以下屏幕截图展示了这一体验。
由于 app 是从提示词生成的,每次构建都有所不同。以下屏幕截图展示了一个这样的例子。其中,着陆页提示输入源账号 ID、目标账号 ID、资源类型(Agent、连接器、知识库、Flow 或 Space)和选择器(ID、名称或全部),并根据需要提供其他选项。

图 3:着陆页上可用的其他迁移选项
选择 Confirm & migrate 后,你会看到类似以下的响应:
图 4:选择 Confirm and migrate 后的确认响应
确认并迁移后,你应该会看到 MCP 服务器返回的响应,列出了创建/更新的资源。
图 5:MCP 服务器响应,列出了创建或更新的资源
打开 History 选项卡可以查看每次过去的迁移。每个条目都有迁移工具写入 Amazon S3 的版本化快照作为后盾,因此你可以获得完整的、可审计的推广记录,包括推广了什么以及何时推广,并可以选择检查任何早期版本。
图 6:History 选项卡显示过去迁移的可审计记录
要回滚,请选择一个资源的备份版本并选择 Restore。App 会将该保存的版本重新应用到目标。因为它在还原前首先获取了新的备份,所以回滚本身也是可逆的。
图 7:将资源回滚到早期备份版本
跨账号推广是企业软件的基本预期,而直到现在,这一直是 Amazon Quick 缺失的一环。Quick Resource Migrator 将一项缓慢、人工操作、难以审计的任务转变为一项快速、可重复且可治理的任务:单次工具调用即可在目标账号中重新创建 Agent、连接器和知识库,并忠实地复制权限——所有操作都是幂等的,因此你可以在每次发布时运行它。
克隆示例代码库,部署到运行器账号中,然后尝试将 Agent 或知识库从开发环境推广到生产环境。之后,根据你自己的治理和安全加固需求调整这一模式。