如何使用堡垒主机通过SSH进行Redshift

时间:2018-07-11 12:35:57

标签: python amazon-ec2 amazon-redshift putty ssh-tunnel

我一直在尝试找出如何将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?

1 个答案:

答案 0 :(得分:1)

堡垒仅用于将请求从您自己的计算机转发到Amazon Redshift。您不需要在堡垒上安装任何软件(例如psql)。

假设您可以成功使用PuTTY登录到堡垒,请在PuTTY中更改此配置:

  • 转到隧道配置页面
  • 源端口: 5439
  • 目标:Redshift集群的完整DNS名称,后跟:5439
  • 点击添加
  • 保存您的腻子设置

这是Connecting to a Redshift Cluster with a Private IP的照片:

PuTTY for Redshift

此配置显示:“通过SSH连接将本地端口5439重定向到堡垒服务器。从那里,堡垒将流量发送到REDSHIFT-DNS:5439。”

因此,堡垒就像一个跳跃盒,可以转发您的流量,而实际上没有运行其他任何东西。

您可以将本地源端口更改为任何您喜欢的端口,以便在同一SSH连接上可以有多个隧道。