通过psycopg2连接到AWS RDS数据库

3
我正在尝试使用psycopg2的Python脚本从我的计算机连接到RDS数据库。 Python代码:
import psycopg2
from db_credentials import *
import logging

def get_psql_conn():
    conn = psycopg2.connect(dbname=DB_NAME, user=DB_USER, password=DB_PASS, host=DB_HOST)
    logging.info("connected to DB!")
    return conn

我遇到了以下错误:

psycopg2.OperationalError: could not connect to server: Operation timed out
        Is the server running on host ********* and accepting
        TCP/IP connections on port 5432?

我的安全组分配给RDS数据库:
SG 1: 在此输入图片描述

enter image description here


SG 2: 在此输入图片描述

enter image description here


现在我尝试创建一个安全组,允许我的计算机IP访问数据库。
SG 3: 在此输入图像描述

enter image description here

我可以从我的EC2实例连接到数据库,运行与上述相同的Python脚本。这似乎与第二个安全组有关,因为当我将其删除时,我也无法从我的EC2实例连接。然后,它会抛出与我尝试从计算机连接时相同的错误。
我对RDS或安全组的了解很少,我只是按照互联网教程进行操作,但似乎无法理解其中的意义。

Amazon RDS实例是在公共子网还是私有子网中?Publicly Accessible设置的值是多少?另请参阅:使用VPC的公共或私有子网解决连接到Amazon RDS实例的问题 - John Rotenstein
直到今天才公开。我最终公开了它,现在一切正常,所以谢谢您的回复 :)就安全而言,我想这仍然可以接受,因为我只是一个独立开发者,我的数据库中没有太有趣的数据,并且仍然需要密码访问。 - smiffy
公共设置为它提供了一个可以从互联网访问的公共IP地址。只要保持您已经做过的安全组锁定,您就会很安全。 - John Rotenstein
1个回答

2
当从互联网访问Amazon RDS数据库时,需要配置数据库为 Publicly Accessible = Yes
这将为数据库实例分配一个公共IP地址。实例的DNS名称也将解析为公共IP地址。
对于公开访问的数据库,为了保证安全,请确保安全组仅允许从您的个人IP地址访问。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接