View a markdown version of this page

跨账户共享注册表 Amazon RAM - Amazon Bedrock AgentCore
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)。

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

跨账户共享注册表 Amazon RAM

您可以使用 Resource Acc Amazon ess Manager (RAM) 与其他 Amazon 账户共享 Amazon 代理注册表。借助 RAM 共享,您自己的账户以外的账户可以发现、发布到您的注册表或管理注册表中的记录,而无需拥有注册表本身。

当您共享注册表时,RAM 会代表您创建和管理基于资源的策略。您可以选择托管权限来控制消费者账户可以执行哪些操作,剩下的则由 RAM 处理。

跨账号共享的工作原理

Cross-account 共享过程分为三步:

  1. 注册表所有者共享注册表 — 所有者创建 RAM 资源共享,选择托管权限,并添加一个或多个使用者账户 ID 作为委托人。RAM 将基于资源的策略附加到注册表。

  2. 消费者接受邀请-对于所有者 Amazon 组织之外的账户,RAM 会发送消费者必须接受的邀请。对于同一组织内的帐户(启用了与 Organizations 的 RAM 共享),系统会自动接受——无需邀请。

  3. 使用@@ 者访问共享注册表 — 使用者使用自己的凭据对所有者的注册表 ARN 调用 Amazon 代理注册表 API。他们可以执行的操作取决于附加到共享的托管权限。

Cross-account 共享具有以下主要特征:

  • 只有注册表所有者才能启动共享。

  • RAM 代表您创建和管理基于资源的策略,您可以选择托管权限来控制它授予哪些操作。

  • 您选择的托管权限决定了消费者可以执行的操作(发现、发布或管理)。

  • Control-plane 注册表突变 (UpdateRegistry,DeleteRegistry) 始终保留在所有者手中,它们不能通过 RAM 进行委托。

先决条件

在共享注册表之前,请确保满足以下要求:

在注册表所有者账户中:

  • 注册表处于READY状态。

  • 调用方拥有 IA Amazon M 操作权限(ram:CreateResourceShareram:AssociateResourceShare、ram:DisassociateResourceShare、ram:DeleteResourceShare、、ram:GetResourceShares、ram:GetResourceShareAssociations)和agent-registry:PutResourcePolicy。

在消费者账户中:

  • 调用者拥有 A Amazon gent Registry 操作的 IAM 权限,这些权限与附加到共享的托管权限相对应。

  • 对于外部(跨组织)共享,调用方还需要ram:GetResourceShareInvitations和ram:AcceptResourceShareInvitation(或ram:RejectResourceShareInvitation)。

对于组织内部共享:

  • Amazon 必须启用与 Organi Amazon zations 的 RAM 共享。有关更多信息,请参阅 Amazon RAM 用户指南中的启用与 Or Amazon ganizations 共享。

  • 启用组织共享后,组织内的账户无需接受邀请,共享会自动生效。

RAM 管理的权限 Amazon 代理注册表

共享注册表时,您可以附加一个 Amazon RAM 托管权限,用于控制使用者账户可以执行哪些操作。 Amazon 代理注册表提供四种托管权限:一个默认权限和三个基于角色的权限。这些允许您授予每个用例所需的最低访问权限。

AWSRAMDefaultPermissionAgentRegistryReadOnly

这是agent-registry:Registry资源类型的默认权限。当您在未指定权限的情况下创建资源共享时,RAM 会自动附加此权限。它授予对注册表元数据和记录(包括控制平面读取和数据平面发现)的只读访问权限,但不允许发布记录或调用注册表的模型上下文协议 (MCP) 端点。

用例:共享注册表以实现可见性和审计。消费者可以浏览和搜索目录,但不能通过 MCP 端点发布、修改或调用工具。

此权限向消费者账户授予以下操作:

  • agent-registry:GetRegistry— 查看注册表配置和元数据。

  • agent-registry:GetRegistryRecord— 读取单个记录的详细信息(控制平面)。

  • agent-registry:ListRegistryRecords— 列出注册表(控制平面)中的所有记录。

  • agent-registry:SearchDiscoverableRegistryRecords—使用混合搜索搜索已批准的记录。

  • agent-registry:GetDiscoverableRegistryRecord—获取已批准记录(数据平面)的完整详细信息。

  • agent-registry:ListDiscoverableRegistryRecords— 列出已批准的记录(数据平面)。

  • agent-registry:ListTagsForResource— 列出附加到注册表或记录的标签。 Read-only; 它不授予添加或删除标签的权限。

AWSRAMPermissionAgentRegistryForConsumer

此权限授予数据平面发现访问权限以及调用注册表的 MCP 端点的能力。将此权限用于消费者角色(需要发现和使用目录中注册的工具的 AI 代理或人类用户)。

用例:与代理需要发现工具并通过 MCP 端点调用工具的账户共享注册表。消费者无法创建或管理记录。

此权限向消费者账户授予以下操作:

  • agent-registry:SearchDiscoverableRegistryRecords—搜索已批准的记录。

  • agent-registry:GetDiscoverableRegistryRecord—获取已批准记录的完整详细信息。

  • agent-registry:ListDiscoverableRegistryRecords— 列出已批准的记录。

  • agent-registry:InvokeRegistryMcp— 调用注册表的 MCP 端点。

AWSRAMPermissionAgentRegistryForPublisher

此权限授予消费者权限授予的所有内容,以及创建、更新、删除和提交记录以供批准的控制平面访问权限。此权限适用于发布者角色,即共享账户中向中央注册表贡献资源的创建者。

用例:与需要将 MCP 服务器、代理或工具发布到目录中的团队共享注册表。出版商可以管理自己的记录并发现其他记录,但不能批准或拒绝记录。

此权限向消费者账户授予以下操作:

  • agent-registry:GetRegistry—查看注册表配置。

  • agent-registry:CreateRegistryRecord—创建新记录。

  • agent-registry:UpdateRegistryRecord— 更新现有记录。

  • agent-registry:DeleteRegistryRecord—删除记录。

  • agent-registry:GetRegistryRecord— 阅读个人记录的详细信息。

  • agent-registry:ListRegistryRecords— 列出所有记录。

  • agent-registry:SubmitRegistryRecordForApproval—提交记录供策展人审阅。

  • agent-registry:SearchDiscoverableRegistryRecords—搜索已批准的记录。

  • agent-registry:GetDiscoverableRegistryRecord—获取已批准记录的完整详细信息。

  • agent-registry:ListDiscoverableRegistryRecords— 列出已批准的记录。

  • agent-registry:InvokeRegistryMcp— 调用注册表的 MCP 端点。

  • agent-registry:ListTagsForResource— 列出附加到注册表或记录的标签。 Read-only; 它不授予添加或删除标签的权限。

AWSRAMPermissionAgentRegistryForAdmin

此权限授予发布者权限授予的所有内容,以及批准、拒绝或弃用记录的能力。将此权限用于管理员角色(另一个账户中的授权管理员,代表所有者管理共享注册表)。

用例:与管理完整记录生命周期(发布、审阅和批准记录)的账户共享注册表,而无需拥有注册表基础架构本身。管理员无法更新或删除注册表。

此权限向消费者账户授予以下操作:

  • agent-registry:GetRegistry—查看注册表配置。

  • agent-registry:CreateRegistryRecord—创建新记录。

  • agent-registry:UpdateRegistryRecord— 更新现有记录。

  • agent-registry:UpdateRegistryRecordStatus— 批准、拒绝或弃用记录。

  • agent-registry:DeleteRegistryRecord—删除记录。

  • agent-registry:GetRegistryRecord— 阅读个人记录的详细信息。

  • agent-registry:ListRegistryRecords— 列出所有记录。

  • agent-registry:SubmitRegistryRecordForApproval—提交记录供策展人审阅。

  • agent-registry:SearchDiscoverableRegistryRecords—搜索已批准的记录。

  • agent-registry:GetDiscoverableRegistryRecord—获取已批准记录的完整详细信息。

  • agent-registry:ListDiscoverableRegistryRecords— 列出已批准的记录。

  • agent-registry:InvokeRegistryMcp— 调用注册表的 MCP 端点。

  • agent-registry:ListTagsForResource— 列出附加到注册表或记录的标签。 Read-only; 它不授予添加或删除标签的权限。

选择托管权限

如果你想让消费者... 选择此权限

浏览和搜索目录(只读,不调用 MCP)

AWSRAMDefaultPermissionAgentRegistryReadOnly

发现工具并调用 MCP 端点

AWSRAMPermissionAgentRegistryForConsumer

发布和管理记录 + 发现工具

AWSRAMPermissionAgentRegistryForPublisher

完整记录生命周期(发布 + approve/reject /deprecate)

AWSRAMPermissionAgentRegistryForAdmin

提示

对于消费者账户的代理需要发现和调用工具的典型共享场景,我们建议使用消费者权限。

注意

如果消费者帐户使用 Amazon CloudFormation (AWS::AgentRegistry::Registry或AWS::AgentRegistry::RegistryRecord)管理记录,则使用发布者或管理员权限。 CloudFormation 处理程序调用agent-registry:ListTagsForResource其创建、读取、更新和删除路径,而消费者权限不授予该操作。

创建客户管理的权限

对于高级用例(例如使用条件键仅限访问由特定账户创建的记录),您可以创建客户管理的 RAM 权限。 Customer-managed 权限允许您定义引用 Amazon Agent Registry 条件键的自定义Condition块。

有关创建客户管理权限的更多信息,请参阅 Amazon RAM 用户指南中的可共享资源。

有关 Amazon 代理注册表的可用条件键,请参见用于细粒度记录访问的条件键。

与其他账户共享注册表

只有注册表所有者才能启动共享。

控制台

  1. 打开Amazon 代理注册表控制台。

  2. 选择要共享的注册表。

  3. 在注册表详细信息页面上,向下滚动到注册表共享部分。

  4. 选择共享注册表。

  5. 在共享注册表面板的 R es Amazon ource Access Manager (RAM) 共享下,选择以下选项之一:

  6. 在 Amazon RAM 共享托管权限下,从下拉列表中选择托管权限。这是必需的,您必须先选择一个权限才能共享。

    有关选择权限的帮助,请参阅选择托管权限。

  7. 在账户下,输入您要与之共享的每个账户的账户 ID。 Amazon 选择 “添加其他帐户” 以添加更多帐户。

  8. 选择共享。

注册表共享表显示了关联。对于外部共享,在消费者接受邀请之前,关联状态将显示为 “正在关联”。

Amazon CLI

使用create-resource-share命令创建包含注册表 ARN 和使用者账户 ID 的 RAM 资源共享:

aws ram create-resource-share \ --name "my-registry-share" \ --resource-arns "arn:aws:agent-registry:us-east-1:111122223333:registry/MyRegistryId" \ --principals "444455556666" \ --permission-arns "arn:aws:ram::aws:permission/AWSRAMPermissionAgentRegistryForConsumer" \ --allow-external-principals

替换以下内容:

  • my-registry-share— 资源共享的描述性名称。

  • 注册表 ARN — 您要共享的注册表的 ARN。

  • 444455556666— 消费者的 Amazon 账户 ID。

  • 权限 ARN-要附加的托管权限的 ARN。省略--permission-arns使用默认值AWSRAMDefaultPermissionAgentRegistryReadOnly。

  • --allow-external-principals— 如果消费者账户在您的 Amazon 组织之外,请包含此标志。对于组织内部共享,请将其省略。

验证共享是否处于活动状态:

aws ram get-resource-share-associations \ --association-type RESOURCE \ --resource-arns "arn:aws:agent-registry:us-east-1:111122223333:registry/MyRegistryId"

接受分享邀请

当注册表与所有者 Amazon 组织之外的账户共享时,消费者账户会收到邀请。消费者必须接受邀请,然后才能访问共享注册表。

注意

如果两个账户都在同一个 Amazon 组织中,并且启用了与 Organizations 的 Amazon RAM 共享,则会自动接受——无需邀请,你可以跳过此步骤。

控制台

  1. 打开Amazon 代理注册表控制台。

  2. 在注册表概述页面的顶部,蓝色横幅显示待处理的共享请求(一次最多显示 3 个):

    “新的注册表共享请求——账户 111122223333 想在 2026 年 8 月 11 日 MyRegistryId 与你共享注册表。”

  3. 选择 Accept (接受)。

接受后,共享注册表将出现在使用者的注册表列表中。您也可以选择 “查看邀请详情”,在 Amazon RAM 控制台中查看共享。

Amazon CLI

查找待处理的邀请:

aws ram get-resource-share-invitations \ --query 'resourceShareInvitations[?status==`PENDING`]'

使用回复中的邀请 ARN 接受邀请:

aws ram accept-resource-share-invitation \ --resource-share-invitation-arn "arn:aws:ram:us-east-1:111122223333:resource-share-invitation/12345678-abcd-efgh-ijkl-123456789012"

拒绝分享邀请

如果您不想访问共享注册表,可以拒绝邀请。拒绝邀请意味着您将无权访问共享注册表。

控制台

  1. 打开Amazon 代理注册表控制台。

  2. 在注册表概述页面的顶部,找到待处理的共享请求横幅。

  3. 选择 Reject (拒绝)。

Amazon CLI

查找待处理的邀请:

aws ram get-resource-share-invitations \ --query 'resourceShareInvitations[?status==`PENDING`]'

拒绝邀请:

aws ram reject-resource-share-invitation \ --resource-share-invitation-arn "arn:aws:ram:us-east-1:111122223333:resource-share-invitation/12345678-abcd-efgh-ijkl-123456789012"
注意

接受共享邀请后,权限可能需要很短的时间才能传播。

访问共享注册表

共享激活后(通过接受邀请或组织级自动接受),使用者使用自己的凭据对所有者的注册表 ARN 调用 A Amazon gent Registry API。可用的具体操作取决于附加到共享的托管权限。

示例:以消费者身份发现记录

# List approved records in the shared registry aws agent-registry list-discoverable-registry-records \ --registry-id "arn:aws:agent-registry:us-east-1:111122223333:registry/MyRegistryId" # Search for tools aws agent-registry search-discoverable-registry-records \ --registry-ids "arn:aws:agent-registry:us-east-1:111122223333:registry/MyRegistryId" \ --search-query "order management" # Get full record details aws agent-registry batch-get-discoverable-registry-record \ --entries '[{"registryId":"arn:aws:agent-registry:us-east-1:111122223333:registry/MyRegistryId","recordIds":["arn:aws:agent-registry:us-east-1:111122223333:registry/MyRegistryId/record/MyRecordId"]}]'

示例:以发布者的身份发布记录

aws agent-registry-control create-registry-record \ --registry-id "arn:aws:agent-registry:us-east-1:111122223333:registry/MyRegistryId" \ --name "my-mcp-server" \ --display-name "Order Management MCP Server" \ --record-type MCP \ --descriptors '{"mcpServer": {"data": "{\"name\": \"order-mgmt\", \"description\": \"Order management tools\", \"version\": \"1.0.0\"}", "dataSchemaVersion": "2025-12-11"}}' \ --record-version "1.0"

停止与账号共享

要撤消使用者对您的共享注册表的访问权限,请从资源共享中移除该使用者帐户。

控制台

  1. 打开Amazon 代理注册表控制台。

  2. 选择您要共享的注册表。

  3. 在注册表详细信息页面上,向下滚动到注册表共享部分。

  4. 选择要删除的账户。

  5. 选择 Stop sharing(停止共享)。

消费者立即失去对注册表的访问权限。在完全撤消访问权限之前,可能会有很短的传播延迟(最多 30 秒)。

Amazon CLI

disassociate-resource-share用于从共享中移除消费者账户:

aws ram disassociate-resource-share \ --resource-share-arn "arn:aws:ram:us-east-1:111122223333:resource-share/12345678-1234-1234-1234-123456789012" \ --principals "444455556666"

验证委托人是否已解除关联:

aws ram get-resource-share-associations \ --association-type PRINCIPAL \ --resource-share-arns "arn:aws:ram:us-east-1:111122223333:resource-share/12345678-1234-1234-1234-123456789012"

要删除整个资源共享(一次性删除所有使用者帐户),请执行以下操作:

aws ram delete-resource-share \ --resource-share-arn "arn:aws:ram:us-east-1:111122223333:resource-share/12345678-1234-1234-1234-123456789012"

用于细粒度记录访问的条件键

Amazon 代理注册表提供了两个特定于服务的条件键。您可以在客户管理的 RAM 权限、IAM 身份策略和 SCP 中使用这些密钥来控制个人记录级别的访问权限。它们在跨账户共享注册表时特别有用,在这种情况下,即使另一个账户拥有注册表本身,您也希望消费者账户仅对其拥有或源自自己账户的记录采取行动。

这两个密钥都是在授权时从存储的记录中解析出来的,并且无法通过请求输入进行设置,因此消费者无法通过欺骗它们来访问属于其他账户的记录。

注册表记录条件键

以下条件键适用于 “API 操作” 列中列出的记录级操作。

条件键 类型 API 操作 说明

agent-registry:RecordCreatorAccount

字符串

GetRegistryRecord, UpdateRegistryRecord, DeleteRegistryRecord, SubmitRegistryRecordForApproval, UpdateRegistryRecordStatus, GetDiscoverableRegistryRecord

按创建注册表记录的主体的 Amazon 账户 ID 筛选访问权限。在授权时从存储的记录中解析;无法通过请求输入进行设置。

agent-registry:RecordSourceAccount

字符串

GetRegistryRecord, UpdateRegistryRecord, DeleteRegistryRecord, SubmitRegistryRecordForApproval, UpdateRegistryRecordStatus, GetDiscoverableRegistryRecord

根据与注册表记录关联的源资源的 Amazon 帐户 ID(例如,自动检测到的资源所在的帐户)筛选访问权限。在授权时从存储的记录中解析;无法通过请求输入进行设置。

注意

这些条件键仅对引用特定记录的操作进行评估。它们未根据以下条件进行评估:

  • CreateRegistryRecord— 记录在创建时尚不存在,因此没有存储的创建者或来源帐户可供比较。

  • SearchDiscoverableRegistryRecords、ListRegistryRecords、和 ListDiscoverableRegistryRecords — 无论条件键限制如何,这些操作都会返回所有匹配记录的摘要。这些密钥适用于单个记录读取和记录写入操作,不适用于搜索或列表枚举。

如果您需要将其他账户的记录完全保存在消费者视野之外,请不要在共享权限中授予搜索和列出操作。

示例:限制对消费者创建的记录的访问权限

以下客户管理的 RAM 权限仅允许消费者读取、更新和删除创建者账户与消费者自己的账户相匹配的记录:

{ "Effect": "Allow", "Action": [ "agent-registry:GetDiscoverableRegistryRecord", "agent-registry:GetRegistryRecord", "agent-registry:UpdateRegistryRecord", "agent-registry:DeleteRegistryRecord" ], "Condition": { "StringEquals": { "agent-registry:RecordCreatorAccount": "${aws:PrincipalAccount}" } } }

${aws:PrincipalAccount}策略变量会在评估时动态解析——每个使用者只能访问他们自己创建的记录,即使在共享注册表中也是如此。

示例:限制访问源自消费者账户的记录

以下客户管理的 RAM 权限允许消费者只读源资源位于消费者自己账户中的记录,这在自动检测消费者拥有的资源中的记录时很有用:

{ "Effect": "Allow", "Action": [ "agent-registry:GetDiscoverableRegistryRecord", "agent-registry:GetRegistryRecord" ], "Condition": { "StringEquals": { "agent-registry:RecordSourceAccount": "${aws:PrincipalAccount}" } } }

有关创建客户管理的 RAM 权限的说明,请参阅 Amazon RAM 用户指南中的创建客户托管权限。

问题排查

症状 可能原因 解决方案

消费者AccessDeniedException在接受邀请后获得

共享尚未完全激活,或者使用者的 IAM 角色缺少agent-registry:*权限。

确认共享状态为ACTIVE使用中aws ram get-resource-shares --resource-owner OTHER-ACCOUNTS。验证消费者的身份策略包括托管权限授予的操作。

创建共享FAILED后会显示资源关联状态

RAM 不接受注册表 ARN。

确认 ARN 开头为,arn:aws:agent-registry:并且注册表处于状态。READY

消费者找不到待处理的邀请

这些账户位于启用了 RAM Amazon 组织共享的同一个组织中。

组织内部共享是自动接受的。验证共享注册表是否显示在中aws ram list-resources --resource-owner OTHER-ACCOUNTS --resource-type agent-registry:Registry。

消费者可以致电list-discoverable-registry-records但search也可以batch-get退货 403

附加了客户管理的 RAM 权限,该权限只能在ListDiscoverableRegistryRecords不使用SearchDiscoverableRegistryRecords或GetDiscoverableRegistryRecord的情况下授予。

使用验证附加了哪个权限aws ram list-resource-share-permissions --resource-share-arn …​。切换到 Amazon 托管权限(所有四个权限都包括列表、搜索和获取),或者更新客户管理的权限以包含缺少的操作。

停止共享后,消费者仍然可以短暂访问注册表

Resource-based 策略传播有很短的延迟。

等待大约 30 秒后重试。撤销访问权限最终是一致的。

ram:CreateResourceShare 返回 AccessDeniedException

所有者的 IAM 角色缺少 RAM 权限。

将ram:CreateResourceShare和附加agent-registry:PutResourcePolicy到所有者的 IAM 角色。