Amazon web services 跨帐户VPC对等连接到RDS
我有两个AWS帐户(A和B)。它们每个都有一个VPC,没有重叠的CIDR块,它们都位于同一区域。我已成功地在它们之间创建了VPC对等连接(该连接处于活动状态)。请求者和接收者都允许远程专有网络dns解析 我已在每个VPC表中指定将对方的VPC cidr块路由为目标,并将对等连接作为目标 我有一个EC2实例运行在AccountA的VPCA内的公共子网中,连接到安全组SecurityGroupA。SecurityGroupA启用VPCA默认安全组中所有来源的入站,以及AccountBId/SecurityGroupB的入站和所有出站 我有一个RDS postgres实例运行在AccountB的VPCB中,连接到安全组SecurityGroupB。SecurityGroupB在AccountAId/SecurityGroupAId的端口5432(postgres默认端口)上启用入站TCP 运行aws ec2 descripe security group references--group id SecurityGorupAId时,我得到Amazon web services 跨帐户VPC对等连接到RDS,amazon-web-services,amazon-ec2,amazon-rds,amazon-vpc,aws-security-group,Amazon Web Services,Amazon Ec2,Amazon Rds,Amazon Vpc,Aws Security Group,我有两个AWS帐户(A和B)。它们每个都有一个VPC,没有重叠的CIDR块,它们都位于同一区域。我已成功地在它们之间创建了VPC对等连接(该连接处于活动状态)。请求者和接收者都允许远程专有网络dns解析 我已在每个VPC表中指定将对方的VPC cidr块路由为目标,并将对等连接作为目标 我有一个EC2实例运行在AccountA的VPCA内的公共子网中,连接到安全组SecurityGroupA。SecurityGroupA启用VPCA默认安全组中所有来源的入站,以及AccountBId/Secur
{
"SecurityGroupReferenceSet": [
{
"GroupId": "SecurityGroupAId",
"ReferencingVpcId": "VPCBId",
"VpcPeeringConnectionId": "pcx-XXXXXXXXXXXXXXXXX"
}
]
}
这似乎表明安全组被正确引用但是当尝试从EC2实例连接到RDS实例时,我收到一个连接超时错误。RDS数据库是否设置为
public Available=Yes
?是的,但psql超时错误显示的RDS ip对应于它的一个VPC地址,而不是公共地址。因此,我假设它正确地尝试通过对等连接访问它?我的实际用例不是EC2实例,而是ECS计划的任务被赋予更改公共IP,因此我尝试不更新RDS安全组以允许入站规则中的另一个公共IP。如果这是使用公共可用RDS实例的唯一方法,我将尝试为任务分配特定的公共IP:)当您尝试在VPC内解析RDS DNS名称时(例如使用EC2实例中的nslookup
),它解析为公共IP地址还是专用IP地址?如果解析为公共IP地址,则应将其设置为public Accessible=No
,以便流量保持在VPC内。RDS上引用EC2安全组的安全组将需要专用IP地址。您可以通过临时更改RDS安全组来测试这一点,以允许从任何地方进行连接,并查看连接是否成功。EC2将VPC内的RDS DNS名称正确解析为专用IP。现在一切都好了。它似乎可以在公共访问设置为“否”或“是”的情况下工作。问题是我在为测试目的重新创建对等连接时忘记更新RDS VPC路由表(hum…)。谢谢你的建议!