我能够通过我的 EC2 实例通过以下方式访问我的 RDS 实例
psql -U user -h hostname $DBname
我想知道 RDS 如何连接到 EC2。 是私有 IP 还是公共 IP 或主机名
我的开发人员在后端 http://privateip:5000 连接配置了我的私有 IP(不知道它到底是什么(
当我使用此命令时:
curl --location --request GET 'http://localhost:5000/api/Supplier
我能够访问 API 响应。
但是当我使用我的
curl --location --request GET 'http://privateip:5000/api/Supplier
我得到卷曲:(7( 无法连接到私有 IP 端口 5000:连接被拒绝
我确信我的 EC2 可以连接到 RDS。
也许我对此的理解是有限的。
有人可以帮助我摆脱困境吗?
我的 RDS SG
All TCP TCP 0 - 65535 Custom sg-EC2
PostgreSQL TCP 5432 Custom 0.0.0.0/0
PostgreSQL TCP 5432 custom sg-Ec2
All UDP UDP 0 - 65535 Custom sg-EC2
All ICMP - IPv4 ICMP 0 - 65535 Custom sg-EC2
如果您尝试从实例本身连接到私有 IP 地址,则需要确保满足以下条件:
- 安全组中从实例源到端口 5000 的入站访问。
- 实例的安全组中允许的出站访问。 NACL 是默认 NACL,
- 或者如果您自己创建了 NACL,则允许入站和出站访问,包括对临时端口的访问。
安全组的源入站规则的范围应限定为以下规则之一:
- 来自 EC2 实例的私有 IP 地址范围的入站,例如
10.0.0.1/32
- 来自子网或 VPC 范围的入站,例如
10.0.0.0/16
. - 从世界各地入境,例如
0.0.0.0/0
(请谨慎使用,因为这允许任何可以连接的服务器能够在此端口上进行连接(。 - 来自安全组的入站(相同或不同(。 例如
sd-abcdef
检查实例 SG 的经验法则telnet privateip 5000
如果端口未打开,则清楚地表明 EC2 实例安全组不允许该端口。
然后从实例的 SG 打开5000
。
如果上述修复程序不能解决问题,则可能是应用程序仅侦听localhost
因此您需要允许0.0.0.0
使用它私有IP。
该问题与连接 Ec2 实例而不是 RDS 有关,您请求我确信我的 EC2 可以连接到 RDS。
curl --location --request GET 'http://privateip:5000/api/Supplier
与 RDS 无关,除了数据库连接。 您的应用程序依赖于 Ec2 安全组,而不是 RDS 安全组。