让 Amazon Quick 达到企业可用:自动化且可审计的跨账户资源晋升
用 AgentCore 上的幂等 MCP 服务器,把 Quick 的智能体、连接器、知识库、流和空间从开发账户晋升到生产,并保留权限、备份与回滚。

目录
#让 Amazon Quick 达到企业可用:自动化且可审计的跨账户资源晋升
Amazon Quick 是 Amazon 面向工作构建的智能体 AI 助手。你构建的智能体可以基于你的数据进行推理、调用操作连接器,并把多步任务执行到完成。把这些资源(对话智能体、操作连接器、知识库、流和空间)从一个开发用 AWS 账户晋升到生产账户,就像晋升任何其他应用一样,一直是一件手工且容易出错的苦差事。本文说明如何用 Amazon Bedrock AgentCore 上一个幂等、可审计的模型上下文协议(Model Context Protocol,MCP)服务器把它自动化。
智能体解决方案的构件是它的智能体、操作连接器、知识库和空间:配置了自定义指令的对话智能体,面向 Slack、Jira 和其他集成的连接器,以你自己的文档为根据的知识库,以及把它们绑在一起的空间(Space)。团队在开发账户里很快地把它们组装起来并迭代。
大多数企业为开发和生产运行分开的 AWS 账户,有时中间还有质量保证(QA)。当智能体、操作连接器和知识库在开发账户中验证通过后,并没有原生的一键方式把它们晋升到下一个账户。团队手工重建每一项资源:用同样的指令和起始提示重建每个智能体,重新挂上每个智能体的操作连接器,重新授予资源权限,并重新置备每个知识库背后的 Amazon Simple Storage Service(Amazon S3)存储桶、存储桶策略和数据源。这项工作慢、难以审计,而且很容易出现细微错误,这会削弱企业需要的治理叙事。
通过 API 管理 Amazon Quick 资源
Amazon Quick 资源是可编程的。空间、智能体、操作连接器、知识库和流通过 Amazon Quick API(属于 Amazon Quick Sight API 表面)管理,它提供完整的资源生命周期:创建、读取、更新、删除和列出。业务用户在 Amazon Quick 中配置的任何东西——带指令和起始提示的智能体、连接器、知识库或流——我们都可以以编程方式检查、重建、更新和治理,包括权限。
这个可编程表面使受治理的晋升成为可能。我们不再手工重建每一项资源,而是通过 API 读取一项资源及其权限,并在另一个账户中按原样重新应用。本文中的迁移器把创建、读取、更新和列出操作组合成一个可重复的工作流,并且从不对目标发出删除,因此一次运行只做添加或更新。
在本文中,我们演练 Quick Resource Migrator,这是一个托管在 Amazon Bedrock AgentCore 运行时(Amazon Bedrock AgentCore 的一项能力)上的示例 MCP 服务器,它在一次工具调用中自动化 Amazon Quick 资源的跨账户晋升。它以资源为驱动:你选择一种资源类型(智能体、连接器、知识库、流或空间),并按 id、按名称或全部来选择。它是幂等的(可以安全地重跑),并且通过描述源并在目标中重放相同操作来忠实地复制权限。完整源代码在 aws-samples 仓库中。
解决方案概览
迁移器在一次调用中晋升一组选定的资源。它是一次更新插入(upsert):目标中尚不存在的资源会被创建,已经存在的会被就地更新。每一次更新都由写入 Amazon S3 的带版本备份保护,变更发生在备份之后,因此每项资源都保留一份你可以复核并回滚到的完整历史。只读预览会在你提交之前准确报告一次运行将创建或更新什么,迁移本身运行在 Amazon Bedrock AgentCore 上,因此可以从 Amazon Quick 或任何兼容 MCP 的客户端驱动。
哪些内容会被迁移
- 选择模型:选择一种资源类型(智能体、连接器、知识库、流或空间),并按 id、按名称或全部选择资源。选择以资源为驱动。直接迁移一种资源类型,或迁移一个空间以把它链接的资源一起带过去。
- 对话智能体:按其自定义指令、身份、语气、起始提示和欢迎消息重建,并重新挂上其操作连接器(重新映射到目标账户)。迁移空间时,其智能体会自动重新链接到它。
- 操作连接器:按其配置重建。机密值从不从源读取。连接器使用占位凭据创建,并在目标中重新认证。
- 知识库:知识库在目标账户中注册,其数据源被重建,其权限被复制。对于以 S3 为后端的知识库,迁移器还会置备目标存储桶及其存储桶策略(这是迁移的一项不同输出)。文档(S3 对象)本身不被复制。
- 流:按其定义在目标账户中重建。因为流 ID 在账户之间不同,流按名称匹配:同名的目标流被更新,否则创建新的。流权限被复制。
- 空间:在目标账户中重建,并重新链接到其智能体、连接器和知识库(资源的 Amazon Resource Names(ARN)被重新映射到目标)。先迁移被链接的资源,以便目标 ARN 能够解析。空间权限被复制。
关键设计原则
- 以资源为驱动的选择。你一次迁移一种资源类型(智能体、连接器、知识库、流或空间),按 id、按名称或全部选择。智能体在重建时重新挂上其操作连接器。空间被重建并重新链接到其智能体、连接器和知识库,ARN 被重新映射到目标账户。
- 权限保真。权限不是硬编码的。服务器对每个源资源调用相关的 Describe*Permissions API,并在目标中重放相同的操作列表,把主体重新映射到目标账户中已注册的用户。
- 幂等。每项资源都是创建或更新。服务器先描述目标,再决定创建还是更新,因此重跑一次迁移会收敛到同一状态,而不是产生重复或失败。
- 最小权限与隔离。源角色是只读的。目标角色只持有迁移所需的操作。运行时用 Cognito JSON Web Token(JWT)对调用方做身份验证,并且可以在虚拟私有云(virtual private cloud,VPC)网络模式下运行。
- 安全、可逆的更新。在迁移器更新任何已存在的目标资源之前,它把该资源及其依赖的带版本快照写入专用备份存储桶。如果该备份写不进去,更新就会中止。每个被创建或更新的资源也会被做快照,恢复工具可以把任何资源回滚到较早版本。
架构
该解决方案使用三账户模型。一个中心运行者账户在 Amazon Bedrock AgentCore 运行时上托管 MCP 服务器。服务器使用 AWS Security Token Service(AWS STS)代入源账户中的只读角色和目标账户中的读写角色,因此任何地方都不存放长期凭据。
[图:三账户架构:运行者账户在 Amazon Bedrock AgentCore 上托管 MCP 服务器,并代入源账户和目标账户中的角色]
图 1:Amazon Quick Resource Migrator MCP 服务器的架构
组件职责
表 1:架构组件
| 组件 | 职责 |
|---|---|
| AgentCore 运行时(运行者账户) | 托管 MCP 服务器(server.py)。代入源账户和目标账户中的角色并编排迁移。在 VPC 网络模式下运行,并带有 Cognito JWT 授权器。 |
| Amazon Cognito(运行者账户) | 用户池、资源服务器,以及一个机器对机器应用客户端。签发 JWT(客户端凭据授权,范围 invoke),由调用方出示给 AgentCore。 |
| 运行者执行角色 | AgentCore 执行角色:Amazon CloudWatch Logs、遥测,以及对源角色和目标角色的 sts:AssumeRole。 |
| 迁移器角色(源账户) | 只读的 Quick Sight describe/list 权限,外加知识库读取。 |
| 迁移器角色(目标账户) | 读写的 Quick Sight create/update 权限、知识库和 S3 写入,以及用于主体解析的 ListUsers。 |
| 备份存储桶(运行者账户) | 加密的 S3 存储桶,存放目标资源的带版本更新前快照和迁移后快照。运行时直接写入。恢复从中读取。可选(未设置时禁用)。 |
迁移流程
- 解析资源:根据资源类型和选择器(id、名称或全部),解析源账户中的具体资源 ID。
- 描述源:描述每个选定资源,以捕获其配置和权限。
- 连接器:重建每个连接器。身份验证配置被清理为创建(写入)模型并使用占位机密,然后在目标中重新认证。复制权限。
- 知识库:创建目标存储桶(knowledge-base-<env>-<account>)、存储桶策略、数据源和知识库,然后复制知识库权限。不复制 S3 对象。
- 智能体:重建每个智能体并挂上其操作连接器(重新映射到目标账户),然后复制智能体权限。智能体到空间的链接在空间本身被迁移时恢复(见空间步骤)。
- 流:按其定义重建每个流,按名称匹配(流 ID 在账户之间不同):更新同名的目标流或创建新的,然后复制流权限。
- 空间:重建每个空间,并用重新映射到目标账户的 ARN 重新链接其智能体、连接器和知识库(先迁移那些资源),然后复制空间权限。
- 报告:返回一份 JSON 报告,包含已创建或已更新的资源、存储桶、备份、被跳过的权限以及任何错误。
MCP 服务器暴露的工具
服务器暴露五个工具,全部定义在 server.py 中。
preview_migration(只读)
preview_migration 接受源账户 ID、资源类型(智能体、连接器、知识库、流、空间或全部)、选择器(id、名称或全部)以及 AWS 区域。它返回将被迁移的智能体、操作连接器、知识库和流的清单,带有名称和类型,而不做任何变更。把它用作演练,以确认范围,并在晋升之前支持变更管理审批步骤。当你同时传入目标账户 ID 时,响应会增加一份源到目标的映射,把每项资源标为 CREATE 或 UPDATE,这样你就可以在运行之前准确看到一次迁移会改变什么。
migrate_resources(完整迁移)
migrate_resources 接受源账户和目标账户 ID、资源类型(智能体、连接器、知识库、流或空间)、选择器(id、名称或全部)、区域、源环境和目标环境名称(用于知识库存储桶名称),以及 Quick Sight 服务角色名称。它执行上文所述的完整创建或更新迁移,并返回一份结构化报告,说明它创建、更新和授予的一切,以及任何错误。因为它是幂等的,你可以反复运行它,例如在每次发布时,它会收敛到同一目标状态。
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 中的操作连接器。
通过 Quick App 使用迁移器
把运行时注册为操作连接器后,你可以用自然语言从 Amazon Quick 驱动迁移器,也可以构建一个 Quick App:叠在同一组 MCP 工具上的点击式网页体验。你不用手工做那个界面。仓库包含一条可直接使用的应用构建器提示,你把它粘贴到 Amazon Quick 应用构建器中,用你自己的值替换占位的连接器和操作 ID,以生成应用。该应用把工作流变成引导式流程:选择源账户和目标账户以及要晋升的资源,预览将创建或更新的内容,运行迁移,并复核每一次过去迁移的历史,每一条都由服务器写入的带版本 S3 快照支撑。下面的屏幕展示该体验。
一个 Quick App 示例
- 因为应用由提示生成,每次构建都会不同。下面的屏幕展示这样一个例子。其中,着陆页提示输入源账户 ID、目标账户 ID、资源类型(智能体、连接器、知识库、流或空间)和选择器(id、名称或全部),并在需要时提供更多选项。
[图:Quick App 着陆页,带有源账户和目标账户 ID、资源类型和选择器字段]
[图:Quick App 着陆页上的更多迁移选项]
图 3:着陆页上可用的更多迁移选项
- 在你选择 Confirm & migrate 之后,你会看到类似下面的响应:
[图:选择 Confirm and migrate 之后显示的确认视图]
图 4:你选择 Confirm and migrate 之后的确认响应
- 在你确认并迁移之后,你应该看到 MCP 服务器返回已创建或已更新资源的响应。
[图:MCP 服务器响应,列出已创建或已更新的资源]
图 5:列出已创建或已更新资源的 MCP 服务器响应
- 打开 History 选项卡以查看每一次过去的迁移。每一条都由迁移器写入 Amazon S3 的带版本快照支撑,因此你得到一份完整、可审计的记录,说明晋升了什么以及何时晋升,并可以选择检查任何较早版本。
[图:History 选项卡,显示过去迁移的记录]
图 6:显示可审计的过去迁移记录的 History 选项卡
- 要回滚,选择一项资源的备份版本并选择 Restore。应用把该已保存版本重新应用到目标。因为它在恢复之前会先捕获一份新备份,这次回退本身是可逆的。
[图:把一项资源恢复到较早的备份版本]
图 7:把一项资源回滚到较早的备份版本
结论
跨账户晋升是企业软件的一项基线期望,而直到现在,它一直是 Amazon Quick 缺少的一块。Quick Resource Migrator 把一项缓慢、手工、难以审计的任务变成快速、可重复且受治理的任务:一次工具调用在目标账户中重建智能体、连接器和知识库,并忠实地复制权限,而且全部是幂等的,因此你可以在每次发布时运行它。
克隆示例仓库,把它部署到一个运行者账户,并试着把一个智能体或知识库从开发晋升到生产。然后把这个模式适配到你自己的治理和加固要求。
PRIMARY_SOURCE: https://aws.amazon.com/blogs/machine-learning/making-amazon-quick-enterprise-ready-automated-auditable-cross-account-resource-promotion
- #跨账户
- #资源晋升
- #审计
- #回滚
- #MCP


