如何连接我的 redshift 数据库?

How do I connect with my redshift database?

我正在 AWS 上设置一个 redshift 数据库,我已按照本文中的说明进行操作 - https://chartio.com/resources/tutorials/connecting-to-a-database-within-an-amazon-vpc/

我无法连接到数据库。

这是我的设置 -

我有一个使用 Amazon RDS 启动的 PostgreSQL 数据库实例。它连接到具有两个子网的 Amazon VPC。

子网A设置在us-east-2c。它与具有两条路由的路由 Table 关联。第一个有目的地 10.0.0.0/16、目标 'local'、状态 'active' 和传播 'no'。第二个目标为 0.0.0.0/0,目标是与 VPC 关联的互联网网关。

子网B设置在us-east-2b。它有目的地 10.0.0.0/16 和目标 'local'.

PostgreSQL 数据库与具有此入站规则的安全组相关联:类型:自定义 TCP 规则,协议:TCP,端口范围:5432 和源:10.0.0.0/32。没有出站规则。

数据库的其他详细信息:

-可公开访问设置为否

-us-east-2b运行

此外,EC2 上有一个实例。它在 us-east-2c 上。

它与具有这些入站规则的安全组相关联:

第一种类型:自定义 TCP 规则,协议:TCP,端口范围:5432,来源:10.0.0.0/32

第二种类型:SSH,协议:TCP,端口范围:22,来源:(my-ip-address)/32

第三种类型:SSH,协议:TCP,端口范围:22,来源:(安全组的组 ID)

这两个安全组都与具有以下设置的同一 VPC 相关联:IPv4 CIDR:10.0.0.0/16,IPv6 CIDR:(空白)。

我对设置的理解是 EC2 实例是 public,我可以通过 SSH 从我的 SQL 客户端 (Postico) 连接到它。然后,EC2 实例将私下连接到 Redshift 数据库。

这是我的问题-

a) 我以前从未设置过这个,我可能在不知情的情况下做错了一些事情。

b) 我正在尝试从 Postico 创建 SSH 连接。我不知道 'Host' 或 'Port' 应该填什么值。另外,我不知道 'User' 和 'Password' 是指我计算机上帐户的用户名和密码,还是指的是其他东西。

我的目标只是能够拥有 public 无法使用的 PostgreSQL 数据库,但允许我从我的 SQL 客户端 (Postico) 访问它.

我试图研究这个问题,但令人惊讶的是,我找不到满足这些需求的内容。我是新手,所以如果我缺少 post 所需的部分,或者如果我在某些方面搞砸了,请提醒我,我会相应地更新。

您的入站安全组有 "Source: 10.0.0.0/32" 这意味着只有 10.0.0.0 可以连接到它,这是一个无效的主机地址。更改 /32 以匹配您的网络 (/16)。

Redshift 的端口通常是 5439。你引用的是 5432。

我不明白你的 "b" 问题。您要连接到什么?

[更新新信息]

我刚刚意识到你正在尝试做的事情有问题。

您的目标是使用 SSH 从桌面连接到 EC2,然后连接到 RDS。这行不通。

解决方案是设置一个 VPN,例如 OpenVPN,它允许您连接到 AWS 中的 VPC,然后 OpenVPN 会将您的客户端请求转发到 RDS(VPN 路由)。

我所做的是使用 OpenVPN 设置一个 EC2 实例。然后,当我需要 VPN 访问 AWS 时,我打开和关闭这个实例。我有从桌面执行此操作的批处理脚本(启动和停止 EC2 实例)。

另一种选择是允许 Internet 访问 RDS。您可以使用安全组来锁定仅对您的 home/work IP 地址的 Internet 访问。根据您的 Internet 提供商,您的 IP 可能会更改,这意味着使用新的 IP 地址更新您的安全组,但这很容易做到。

此页面将显示您的 public 安全组 IP 地址:What is my IP