[英]How to connect to Amazon redshift cluster from within my Amazon EC2 instance
我的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集群吗? 谢谢!
是网络组还是安全组
设置Amazon Redshift集群时,默认情况下该集群处于锁定状态,因此没有人可以访问它。 要授予其他用户对Amazon Redshift集群的入站访问权限,请将集群与安全组关联。
参见http://docs.aws.amazon.com/redshift/latest/mgmt/working-with-security-groups.html
如果EC2与Redshift群集位于同一VPC中,则可以进行网络连接。 如果不是,请参阅本指南http://docs.aws.amazon.com/redshift/latest/mgmt/enhanced-vpc-routing.html
该问题与附加到Redshift群集的安全组有关。 我本人已经遇到了这个问题,所以我希望您遵循以下步骤-
检查-
VPC-如果您的EC2与Redshift群集位于同一VPC
帐户区域-确保区域也相同。
如果以上标准为真,则-
您可以参考此AWS文档执行上述操作:- 授权对群集的访问
之后,登录ec2并运行-
远程登录<redshift_cluster_endpoint> <redshift_cluster_port>
除上述内容外,您还可以在从本地计算机上运行代码时连接到Redshift,因为您的公共IP(家庭/工作地点)必须已在Redshift的附加安全组中列入了白名单。 因此,将EC2视为需要白名单(IP)的云上类似机器。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.