我是Redshift的新手。目前,我能够创建一个Redshift集群并通过SQL Workbench将其连接,但我希望从我的MAC终端通过ssh
来隧道化我的redshift集群。我做了一些研究,并能够使用与我用来创建Redshift集群相同的VPC ID和子网组来创建ec2实例。我已经在ec2实例上安装了psql。当我使用psql命令连接到redshift时,我无法理解我要去哪里:
psql -h my redshift endpoint -p 5439 -d database name -U user -c " my query "
它给我错误psql:无法将主机名“我的redshift端点”转换为地址:名称或服务未知
答案 0 :(得分:2)
第一步是使用ssh
,通过将本地端口转发到远程端口的命令来隧道连接到EC2实例:
ssh -i KEYPAIR.pem -L 5439:REDSHIFT-ENDPOINT:5439 ec2-user@EC2-PUBLIC-IP
位置:
此命令说:
REDSHIFT-ENDPOINT:5439
(将端点替换为 REDSHIFT-ENDPOINT )然后,您可以连接localhost:5439
上的Redshift,就像它在您自己的计算机上运行一样。该流量将发送到远程计算机,然后将其发送到REDSHIFT-ENDPOINT:5439
。
例如,如果您想使用psql
连接到Redshift,请使用:
psql -h localhost -p 5439 -U <username>
答案 1 :(得分:0)
尝试psql -h localhost -p 5439 -d -U -c " my query "
或psql -p 5439 -d -U -c " my query "
,您不能在没有参数的情况下使用开关-h
,如果不使用参数,则默认为localhost
答案 2 :(得分:0)
感谢John Rotenstein给我的见解,我实际上错过了与我的安全组关联的入站规则,该规则仅允许来自redshift专用IP的流量。我的ec2实例和redshift都在同一VPC中,因此应该使用私有IP代替公共IP。还忘记了将shift的ssh公钥放入ec2的授权密钥文件中。一旦我做到了,它就会起作用。