我面临的情况是,即使我添加了为所有IP打开端口5432并为公共访问部分配置了“是”的安全组,我的RDS实例(PostgreSQL)也无法连接到VPC之外。
RDS信息:
安全组:
有没有人面临同样的情况? 解决这个问题的任何解决方案?
我假设在配置公共访问部分或安全组时存在一些延迟。
答案 0 :(得分:0)
鉴于您可以连接EC2实例并且其他所有设置都已正确设置,您需要验证您的子网组是否正在使用公共子网,如果您想公开公开您的数据库。您可以在RDS实例的实例详细信息上检查子网组和子网。在安全和网络下,你应该找到类似的东西:
子网组
examplegroup
<强>子网强>
subnet-84b243ef
subnet-etu1769c
subnet-186b3f30
然后,您需要查看这些子网并了解它们的配置方式:
Destination | Target
10.0.0.0/16 | local
0.0.0.0/0 | igw-e2f87847
igw
表示互联网网关。如果您看到类似nat
的内容而不是0.0.0.0/0
条目,则可能意味着这是一个私有子网。
您可以使用bash
和aws cli
在jq
中以编程方式执行此操作。这将列出与给定数据库实例的子网组子网关联的所有路由表:
instance_name='example'
aws rds describe-db-instances --filter Name=db-instance-id,Values=${instance_name} | jq .DBInstances[].DBSubnetGroup.Subnets[].SubnetIdentifier -r | while read subnet; do
aws ec2 describe-route-tables --filters Name=association.subnet-id,Values=${subnet} | jq .RouteTables[].Routes
done