postgresql - 在 VPC 中访问 RDS posgtgreSQL?

标签 postgresql amazon-web-services amazon-rds aws-vpc

我的 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

  1. 首先使用公共(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 
  1. 在您的系统中,您可以通过 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 是将用于通过隧道进行连接的本地端口。

对于安全组配置请确保您具有这些入站规则 -

  1. PostgreSQL 从 NAT 打开 5432。您可以通过选择自定义类型来添加 Nat Ip

enter image description here

  1. 应该为 NAT 打开 SSh 22

关于postgresql - 在 VPC 中访问 RDS posgtgreSQL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47987256/

相关文章:

mysql - 确定 RDS 中断的原因

postgresql - libbqxx C++ API 无需数据库名称即可连接到 PostgreSQL

对 TeamCity 进行 docker 化时找不到 Postgresql 驱动程序

sql - 如何将 CSV 导入到已经分配了 ID 的 postgresql?

reactjs - 如何使用 AWS Load Balancer 在子目录中部署 React 应用程序

amazon-web-services - AWS::ElastiCache::CacheCluster 与 AWS::ElastiCache::ReplicationGroup

amazon-web-services - 来自 aws 的预定休息请求

nginx - ELB、RDS mysql、EC2、NGINX 接下来在哪里寻找并发性能问题

postgresql - 是否可以将 Postgresql 数据库从 Amazon RDS 复制到另一个 Amazon RDS?

c# - 如何使用 nhibernate/lightcore 注册两个数据库连接?