跨AWS账号VPC对等场景下私有子网Lambda访问RDS Proxy方案咨询
方案1:复用现有VPC对等连接(成本最低)
你当前走不通的核心原因是RDS Proxy的默认域名解析为公有IP,VPC对等场景下需要强制解析到RDS Proxy的私有IP:
- 到账号1的VPC控制台,找到RDS Proxy所在的子网,记录RDS Proxy的所有私有IP地址
- 在账号2的VPC中创建私有托管Zone(Private Hosted Zone),域名为你RDS Proxy的域名:
proxy-XXXXXXXXX.eu-central-1.rds.amazonaws.com - 在该托管Zone中添加A记录,值填写刚才记录的RDS Proxy私有IP
- 确认账号2私有子网的DNS设置已开启VPC内部DNS解析
- 安全组配置:账号1的RDS Proxy关联的安全组需要入方向放开账号2 Lambda安全组的数据库监听端口(MySQL为3306、PostgreSQL为5432)
- 路由表配置:账号2私有子网的路由表要添加指向账号1 VPC CIDR的路由,下一跳为VPC对等连接ID;账号1的RDS Proxy所在子网的路由表也要添加指向账号2 VPC CIDR的路由,下一跳为同一个VPC对等连接ID
方案2:使用PrivateLink实现跨账号私有访问
如果不想维护对等连接的路由规则,或者后续有更多跨账号服务访问诉求,可以用PrivateLink:
- 账号1侧操作:
- 为RDS Proxy创建目标组,目标类型选择IP,端口填写RDS Proxy的监听端口,VPC选择账号1的VPC
- 创建网络负载均衡器(NLB),部署在RDS Proxy所在的相同私有子网,监听器转发规则指向刚才创建的目标组
- 为该NLB创建VPC终端节点服务(PrivateLink服务),允许账号2的AWS账号ID作为允许的主体
- 账号2侧操作:
- 在账号2的VPC中创建接口端点,选择刚才账号1共享的PrivateLink服务名称,部署在Lambda所在的私有子网,关联Lambda的安全组
- 在账号2的VPC私有托管Zone中添加RDS Proxy域名的A记录,值填写接口端点的私有IP,或者直接修改Lambda的DB_HOST环境变量为接口端点的私有DNS
- 账号1的NLB安全组、RDS Proxy安全组放开账号2接口端点安全组的对应端口访问权限
现有CloudFormation模板补充配置
你当前的模板缺少对等连接的路由配置,需要在账号2的私有子网路由表中添加以下资源:
"vpcPeerRouteToAccount1": { "Type": "AWS::EC2::Route", "Properties": { "RouteTableId": {"Ref": "vpcPrivateSubnet1RouteTableB41A48CC"}, "DestinationCidrBlock": "172.31.0.0/16", // 替换为账号1的实际VPC CIDR "VpcPeeringConnectionId": {"Ref": "vpcPeertomainaccount833D3E2C"} } }
注意账号1侧也要配置对应回包路由,以及安全组的入方向规则。
内容的提问来源于stack exchange,提问作者unglued
相关产品推荐
相关产品推荐

