我的AWS中有一个RDS postgreSQL intsnce。在我的RDS PostgreSQL实例中,public accessibilty为'NO',我拥有自己的VPC和私有子网。我为我的实例选择了私有子网和VPC。我创建了一个lambda函数来使用端点连接相同的RDS实例并进行检查。它已成功连接。
现在,我想访问RDS实例并在此RDS postgreSQL实例上创建一些表。我如何访问此RDS实例以及如何在其上创建表?
我在我的系统中安装了AWS CLI。我使用下面的命令连接AWS CLI。
psql -h endpoint -p 5432 -U username Databasename
但我得到一个错误,如“连接超时”。但是为同一个安全组打开了端口5432。
有没有办法使用AWS CLI连接?我也有一个EC2实例。
有人帮我吗?如果你可以帮助我,这将是很好的。等待你的有利重播..
有两个可以连接到私有子网中的数据库 -
使用Nat
ssh -i key(pem) [email protected](Public IP)
然后您可以直接运行该命令。你不需要任何AWs CLI或boto
psql -h endpoint -p 5432 -U username -p Databasename
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是用于通过隧道连接的本地端口。对于安全组配置确保您具有这些入站规则 -
您需要首先连接到同一vpc中的公有子网中的ec2实例,然后可以从该实例连接到RDS实例。
由于您的RDS实例位于私有子网中并且配置为不具有公共访问权限,因此您无法直接从thr VPC外部的系统访问它。
你可以在这里做的是使用你的系统中的putty或终端对你的ec2实例(假设它有弹性ip / public dns)执行ssh / rdp,然后从你的ec2实例访问rds。
您应该启用对端口22(ssh)或端口3389(rdp)的访问,以从您的系统访问您的ec2实例
既然您提到您是AWS的新手,我将尽力回答:
您可以通过Putty连接到您的aws ec2实例,请关注this Documentation
现在假设您的ec2是公共子网,RDS位于相同VPC的私有子网中
现在假设EC2和RDS首先具有不同的安全组,您将不得不:
要在允许来自其他安全组的连接的VPC安全组中创建规则,请执行以下操作:
现在您可以使用普通的sql connect命令进行连接:
mysql -h myinstance.123456789012.us-east-1.rds.amazonaws.com -P 3306 -u mymasteruser -p
另外,对于更多详细指南,您可以参考AWS Guide
希望这有助于你!