无法连接到Python中的公共RDS实例

时间:2020-07-18 08:09:18

标签: amazon-web-services amazon-rds

我创建了一个RDS实例(Postgres,免费层,默认为VPC),并选择了公共访问权限。现在,我正在尝试像这样在Python中连接它:

import psycopg2 as ps
# define credentials 
credentials = {'POSTGRES_ADDRESS' : '', # change to your endpoint
               'POSTGRES_PORT' : '', # change to your port
               'POSTGRES_USERNAME' : '', # change to your username
               'POSTGRES_PASSWORD' : '', # change to your password
               'POSTGRES_DBNAME' : ''} # change to your db name
# create connection and cursor    
conn = ps.connect(host=credentials['POSTGRES_ADDRESS'],
                  database=credentials['POSTGRES_DBNAME'],
                  user=credentials['POSTGRES_USERNAME'],
                  password=credentials['POSTGRES_PASSWORD'],
                  port=credentials['POSTGRES_PORT'])
cur = conn.cursor()

这是入站的安全组: enter image description here

enter image description here

enter image description here

但是,这超时了。我究竟做错了什么?我相信我已经输入了以上所有凭证,所以也许这是AWS方面的问题?请让我知道是否需要更多信息。

谢谢!

2 个答案:

答案 0 :(得分:4)

您将需要在安全组上允许入站访问:

  • 端口5432
  • 来源:您的IP地址(出于安全考虑)

最好使用这些设置创建一个新的安全组,然后修改数据库以使用此新的安全组。这样,它不会影响其他系统,将来的更改也不会影响此安全组。

另请参阅:Change security group on AWS RDS Database Instance

答案 1 :(得分:2)

基于评论。

事实证明,该问题是由于RDS中的缺少默认数据库引起的。

使用默认数据库重新创建RDS解决了该问题。