是否有办法连接Django到私有RDS通过SSH连接堡垒
?我目前的AWS基础设施有一个EC2 Bastion公网子网和两个私有子网wherepostgres RDS DB驻留。
DATABASES = {
"default": {
"ENGINE": "django.db.backends.postgresql_psycopg2",
"NAME": "aaaa",
"USER": "bbbb",
"PASSWORD": "cccc",
"HOST": "xxx.zzz.us-east-z.rds.amazonaws.com", # RDS Endpoint
"PORT": 5432,
}
}
使用终端i可以ssh到堡垒并检查与RDS的连接,OK。
现在我想把上面的Django设置连接到RDS:
- 我将RDS连接到https://dbeaver.com/软件(结果显示:已连接))
- 在Django端,当我用AWS RDS凭证编辑上面的settings.py时然后启动django
python manage.py runserver
,收到如下错误:
django.db.utils.OperationalError: could not translate host name "xxx.zzz.us-east-z.rds.amazonaws.com" to address: nodename nor servname provided, or not known
.
我的期望是,因为DBeaver软件连接到我的私人RDS,我将能够连接Django到RD实例。(我已将此方法用于公共RDS)
有什么是我错过的方法?
这是DNS问题。如果您使用ip连接,您可能会解决这个问题。
但是如果你需要数据库的名称解析,我建议你也在AWS中运行django,使用私有dns解析。
需要使用putty或SSH客户端创建SSH隧道
https://www.skyverge.com/blog/how-to-set-up-an-ssh-tunnel-with-putty/
然后使用下面的链接连接Djangohttps://gist.github.com/mhulse/1954422