无法连接到公共postgresql rds实例

我在VPC中创build了一个基本的testingPostgreSQL RDS实例,该实例具有单个公有子网,并且可以通过公共互联网进行连接。 它使用默认的安全组,这是开放的端口5432.当我尝试连接,它失败。 我必须错过一些非常简单的事情 – 但是我很迷茫。

这里是数据库设置,请注意它被标记为Publicly AccessibleRDS设置

这里是安全组设置,注意它是全开的(在RDS设置中,通过端点旁边的绿色“授权”提示确认): 安全组设置

这是我试图用来连接的命令:

 psql --host=myinstance.xxxxxxxxxx.us-east-1.rds.amazonaws.com \ --port=5432 --username=masteruser --password --dbname=testdb 

这是我从Yosemite MacBook Pro连接时得到的结果(注意,它是parsing为54. * ip地址):

 psql: could not connect to server: Operation timed out Is the server running on host "myinstance.xxxxxxxxxx.us-east-1.rds.amazonaws.com" (54.xxx.xxx.xxx) and accepting TCP/IP connections on port 5432? 

我没有启用任何types的防火墙,并且能够连接到其他提供者(例如Heroku)上的公共PostgreSQL实例。

任何疑难解答提示将非常感激,因为我在这里非常困难。

更新

根据评论,这里是默认VPC的入站ACL规则: 网络ACL配置

问题是安全组中的入站规则将安全组指定为源。 将其更改为包含我的IP地址的CIDR可解决此问题。

只是想添加我的发现,以节省一些人的时间。 上面介绍的这个解决scheme在一个dev ec2实例上工作,但是在我迁移到一个新的服务器后,它停止工作。 原来,我的RDS实例和EC2实例都在同一个VPC中,所以RDS实例看不到我添加到其安全组的公有IP。 为了得到这个工作,你需要添加到RDS实例的安全组,EC2实例的私有IP,你可以find详细信息。

面临类似的问题,这就是我解决它的方法:

单击RDS实例的安全组并检查入站规则。 你可能会看到像这样的东西:

在这里输入图像描述

必须将IP范围设置为包含您的IP,或者只需在“来源”下拉列表中select“Anywhere”,以便从本地主机或任​​何地方访问:

在这里输入图像描述

在创build我的Postgres实例之后,我的默认安全组(rds-launch-wizard)只列出了我的IP地址,因此我必须在可以连接之前添加“所有通信types”和“来源”。 我不是networking专家,但奇怪的是,我无法连接自己的IP地址作为入站规则。