与其他账户共享 VPC
VPC 共享允许多个 AWS 账户将其应用程序资源 [例如 Amazon EC2 实例、Amazon Relational Database Service(RDS)数据库、Amazon Redshift 集群和 AWS Lambda 函数] 创建到共享的集中管理式 Virtual Private Cloud(VPC)中。在此模型中,拥有 VPC 的账户(拥有者)与属于 中同一企业的其他账户(参与者)共享一个或多个子网AWS Organizations 共享子网之后,参与者可以查看、创建、修改和删除与他们共享的子网中的应用程序资源。参与者无法查看、修改或删除属于其他参与者或 VPC 拥有者的资源。
您可以共享您的 VPC,以针对需要高度互连且位于相同的信任边界内的应用程序,利用 VPC 内的隐式路由。这可减少您创建和管理的 VPC 数量,同时使用单独的账户进行计费和访问控制。您可以通过使用连接功能(例如 AWS PrivateLink、中转网关和 VPC 对等连接)互连共享的 Amazon VPC 来进一步简化网络拓扑。有关 VPC 共享优点的更多信息,请参阅 VPC 共享:多账户和 VPC 管理的新方法
共享 VPC 的先决条件
您必须从企业的管理账户启用资源共享。有关启用资源共享的信息,请参阅《AWS RAM 用户指南》中的通过 AWS Organizations 启用共享。
共享子网
您可以与企业中的其他账户共享非默认子网。要共享子网,必须首先使用要共享的子网、AWS 账户、企业单位或要与之共享子网的整个企业创建一个资源共享。有关创建资源共享的信息,请参阅《AWS RAM 用户指南》中的创建资源共享。
使用控制台共享子网
通过以下网址打开 Amazon VPC 控制台:https://console.aws.amazon.com/vpc/
。 -
在导航窗格中,选择 Subnets(子网)。
-
选择您的子网,然后选择操作、共享子网。
-
选择您的资源共享,然后选择共享子网。
使用 AWS CLI 共享子网
使用 create-resource-share 和 associate-resource-share 命令。
跨可用区映射子网
为确保资源分配到区域的各可用区,我们将可用区独立映射到每个账户的名称。例如,您的 us-east-1a
账户的可用区 AWS 可能与另一 us-east-1a
账户的 AWS 不在同一位置。
要跨账户协调可用区以便进行 VPC 共享,您必须使用 AZ ID(可用区的唯一、一致的标识符)。例如,use1-az1
为 us-east-1
区域中的其中一个可用区的 AZ ID。使用 AZ ID 确定一个账户中的资源相对于另一个账户的位置。您可以在 Amazon VPC 控制台中查看每个子网的 AZ ID。
下图阐明了两个账户,它们具有不同的可用区代码到 AZ ID 的映射。

将共享的子网取消共享
拥有者随时可以将与参与者共享的子网取消共享。在拥有者将共享的子网取消共享后,将应用以下规则:
-
现有参与者资源将继续在已取消共享的子网中运行。具有自动化/托管工作流(如auto 扩展或节点替换)的 AWS 托管服务(例如,Elastic Load Balancing)可能需要持续访问某些资源的共享子网。
-
参与者在已取消共享的子网中无法再创建新资源。
-
参与者可以修改、描述和删除其位于子网中的资源。
-
如果参与者在已取消共享的子网中仍具有资源,则拥有者无法删除共享子网或共享子网 VPC。仅当参与者删除已取消共享的子网中的所有资源之后,拥有者才能删除子网或共享子网 VPC。
使用控制台取消共享子网
通过以下网址打开 Amazon VPC 控制台:https://console.aws.amazon.com/vpc/
。 -
在导航窗格中,选择 Subnets(子网)。
-
选择您的子网,然后选择操作、共享子网。
-
依次选择操作、停止共享。
使用 AWS CLI 取消共享子网
使用 disassociate-resource-share 命令。
确定共享子网的拥有者
参与者可以通过使用 Amazon VPC 控制台或命令行工具来查看已与其共享的子网。
使用控制台确定子网拥有者
通过以下网址打开 Amazon VPC 控制台:https://console.aws.amazon.com/vpc/
。 -
在导航窗格中,选择 Subnets(子网)。拥有者列显示子网拥有者。
使用 AWS CLI 确定子网拥有者
使用 describe-subnets 和 describe-vpcs 命令,这两条命令的输出中将包括拥有者的 ID。
管理 VPC 资源
拥有者和参与者对其拥有的 VPC 资源负责。
拥有者资源
VPC 拥有者负责创建、管理和删除与共享 VPC 相关的资源。其中包括子网、路由表、网络 ACL、对等连接、网关端点、接口端点、Amazon Route 53 Resolver 端点、互联网网关、NAT 网关、虚拟私有网关和 Transit Gateway 挂载)。
VPC 拥有者不能修改或删除参与者创建的资源,例如 EC2 实例和安全组。VPC 拥有者可以查看网络接口和连接到参与者资源的安全组的详细信息,以便于问题排查和审计。VPC 拥有者可以为 VPC 及其子网和网络接口创建流量日志订阅。
参与者资源
参与者可以在共享 VPC 中创建一组有限的 VPC 资源。例如,参与者可以创建网络接口、安全组以及他们拥有的网络接口的流日志。
参与者只能修改或删除他们创建的共享 VPC 中的资源。例如,参与者可以将 IP 地址与他们创建的网络接口关联或解除关联,以及在他们创建的安全组中添加或删除规则。
参与者可以描述他们没有创建的共享 VPC 中的资源。这样,他们就可以有效地使用共享 VPC。例如,参与者可以描述 VPC 及其子网、安全组、路由表、网络 ACL、网关以及 DHCP 选项集。
参与者可以在其拥有的安全组中创建引用属于其他参与者或所有者的安全组的规则,如下所示:
account-number
/security-group-id
参与者不能直接将其私有托管区域之一与共享 VPC 关联。需要控制与 VPC 相关的私有托管区域行为的参与者可以使用以下解决方案:
-
参与者可以创建私有托管区域并与 VPC 拥有者共享。有关共享私有托管区域的信息,请参阅《Amazon Route 53 开发人员指南》中的关联 VPC 与您使用不同 AWS 账户 创建的私有托管区域。
-
VPC 拥有者可以创建跨账户 IAM 角色,以控制拥有者已与 VPC 关联的私有托管区域。然后,拥有者可以向参与者账户授予担任该角色的必要权限。有关更多信息,请参阅《IAM 用户指南》中的 IAM 教程:使用 IAM 角色委派跨 AWS 账户 的访问权限。然后,参与账户可以担任角色,并对拥有者通过该角色的权限委派的私有托管区域行使任何控制权
拥有者和参与者的计费和计量
在共享 VPC 中,每个参与者为其应用程序资源付费,包括 Amazon EC2 实例、Amazon Relational Database Service 数据库、Amazon Redshift 集群和 AWS Lambda 函数。参与者还支付与可用区间数据传输、跨 VPC 对等连接的数据传输和通过 AWS Direct Connect 网关的数据传输关联的数据传输费用。VPC 拥有者支付每小时费用(如果适用),跨 NAT 网关、虚拟私有网关、中转网关、AWS PrivateLink 和 VPC 终端节点的数据处理和数据传输费用。在同一个可用区域(使用 AZ-ID 进行唯一标识)内数据传输是免费的,而不考虑通信资源的账户所有权。
限制
以下限制适用于 VPC 共享的使用:
-
拥有者只能通过 与位于同一企业的其他账户或企业单位共享子网AWS Organizations
-
拥有者无法共享位于默认 VPC 中的子网。
-
参与者无法使用共享 VPC 的其他参与者或 VPC 拥有者所拥有的安全组来启动资源。
-
参与者无法使用 VPC 的默认安全组启动资源,因为此安全组属于拥有者。
-
拥有者无法使用其他参与者拥有的安全组启动资源。
-
当参与者在共享的子网中启动资源时,他们应确保将其安全组附加到资源,而不是依赖于默认安全组。参与者无法使用默认安全组,因为它属于 VPC 拥有者。
-
参与者无法在其未拥有的 VPC 中创建 Route 53 Resolver 终端节点。只有 VPC 拥有者才能创建诸如入站终端节点等 VPC 级资源。
-
VPC 标签和共享 VPC 内资源的标签不会与参与者共享。
-
仅有子网拥有者可以将中转网关挂载到共享子网。参与者不能。
-
参与者可以在共享 VPC 中创建 Application Load Balancer 和网络负载均衡器,但他们无法注册在未与其共享的子网中运行的目标。
-
创建网关负载均衡器时,只有子网拥有者才能选择共享子网。参与者不能。
-
服务配额按各个账户应用。
-
参与者无法在其未拥有的 VPC 中创建接口或网关端点。只有 VPC 拥有者才能创建接口或网关端点。