我一直在尝试找出如何将Amazon Redshift集群设为私有而非公开访问的方式。我正在尝试将数据从当前的MySQL数据库安全地移到Redshift中的集群。当前,我有一个Python脚本,该脚本创建数据的CSV,将其放入S3,为数据创建表,然后使用COPY将其放入Redshift。我们正在使用Python脚本来自动化该过程。
但是,当集群设置为私有时,我完全无法与Redhsift建立连接。我进行了一些挖掘,发现了有关SSH隧道作为潜在解决方案的信息。据我所知,Redshift不支持SSH,但可以使用堡垒主机通过运行psql的ec2实例进行连接。问题是我需要在Python脚本中执行此操作,以使过程尽可能自动化。
我已经创建了一个ec2实例,并使用PuTTY将psql加载到该实例,但是我不确定如何将该实例用作堡垒主机,即连接到该实例并使用它连接到Redshift,以及如何进行此操作在python脚本中,如果有可能的话。有没有人做过类似的事情或知道如何连接到ec2以及从ec2到redshift?
答案 0 :(得分:1)
堡垒仅用于将请求从您自己的计算机转发到Amazon Redshift。您不需要在堡垒上安装任何软件(例如psql
)。
假设您可以成功使用PuTTY登录到堡垒,请在PuTTY中更改此配置:
:5439
这是Connecting to a Redshift Cluster with a Private IP的照片:
此配置显示:“通过SSH连接将本地端口5439重定向到堡垒服务器。从那里,堡垒将流量发送到REDSHIFT-DNS:5439。”
因此,堡垒就像一个跳跃盒,可以转发您的流量,而实际上没有运行其他任何东西。
您可以将本地源端口更改为任何您喜欢的端口,以便在同一SSH连接上可以有多个隧道。