我的 AWS 中有一个 RDS postgreSQL intsnce。在我的 RDS PostgreSQL 实例中,公共(public)可访问性为“否”,我有自己的 VPC 和私有(private)子网。我为我的实例选择私有(private)子网和 VPC。我创建了一个 lambda 函数来使用端点连接同一个 RDS 实例并进行了检查。已成功连接。
现在,我想访问 RDS 实例并在此 RDS postgreSQL 实例上创建一些表。我如何访问此 RDS 实例以及如何在其上创建表?
我在系统中安装了 AWS CLI。我使用以下命令连接 AWS CLI。
psql -h endpoint -p 5432 -U username Databasename
但是我收到类似“连接超时”的错误。但是为同一个安全组打开了5432端口。
有什么方法可以使用 AWS CLI 进行连接吗?我也有一个 EC2 实例。
有没有人可以帮助我?如果你能在这方面帮助我,那就太好了。等待您的好评..
最佳答案
有两种方法可以连接到私有(private)子网中的数据库 -
- 连接到 Nat 实例(公共(public)子网中的 EC2),然后从那里连接到 RDS。
- 在任何机器上,您都可以使用有效的 ssh key 创建从 Nat 到 RDS 的隧道。
使用 Nat
首先使用公共(public) IP 或弹性 IP 通过 ssh 进入 NAT。
ssh -i key(pem) key_user@xx.xx.xx.xx(Public IP)
然后就可以直接运行命令了。为此,您不需要任何 AWs CLI 或 boto
psql -h endpoint -p 5432 -U username -p Databasename
在您的系统中,您可以通过 NAT 创建隧道。为此,您需要在命令行上运行它。你只需要在你的系统或 NAT 上安装 psql。
ssh -i key.pem -N -q -o "StrictHostKeyChecking=no" -L 54320:ENDPOINT:5432 key_user@PublicIP &
& 将确保进程将在后台运行
在此之后通过 ps -ef | 确保您的进程在后台运行grep ssh 之后,您可以使用
连接到 psql psql -h 127.0.0.1 -p 54320 -U username -p
此处 54320 是将用于通过隧道进行连接的本地端口。
对于安全组配置请确保您具有这些入站规则 -
- PostgreSQL 从 NAT 打开 5432。您可以通过选择自定义类型来添加 Nat Ip
- 应该为 NAT 打开 SSh 22
关于postgresql - 在 VPC 中访问 RDS posgtgreSQL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47987256/