【发布时间】:2017-09-11 18:47:46
【问题描述】:
我的 AWS 账户中有一个 Redshift 集群。我可以在 python 中连接到它,当我在本地运行脚本时,它运行得非常好:
import psycopg2
con = psycopg2.connect(dbname='some_dbname', host='hostname.us-east-2.redshift.amazonaws.com', port='port#', user='username', password='password')
cursor=con.cursor()
query = "select * from table;"
cursor.execute(query)
data = np.array(cursor.fetchall())
cursor.close()
con.commit()
con.close()
但是,当我将上述脚本复制到我的 EC2 实例 (Amazon Linux AMI),然后尝试运行它时,我收到以下错误:
conn = _connect(dsn, connection_factory=connection_factory, **kwasync)
psycopg2.OperationalError: could not connect to server: Connection timed out
Is the server running on host "hostname.us-east-2.redshift.amazonaws.com" and accepting
TCP/IP connections on port port#?
谁能帮助我了解如何从我的 EC2 实例连接到我的 Redshift 集群?谢谢!
【问题讨论】:
-
您是否打开了分配给 Redshift 集群的安全组中的端口以允许来自 EC2 实例的连接?
-
@MarkB 不,我该怎么做?
-
您是如何打开安全组以允许从本地计算机访问的?这是相同的过程。
-
集群和 EC2 实例都在同一个 VPC ID 下。但它仍然没有连接并且正在超时。
-
不,只是 Redshift 安全组。
标签: python amazon-web-services amazon-ec2 amazon-redshift psycopg2