如何配置我的 RDS postgresql 实例,以便我可以与我的 API 服务器 EC2 ubuntu 机器进行交互?



我能够通过我的 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 安全组。

最新更新