【问题标题】:how to connect DJANGO app to AWS RDS connected to a bastion via SSH如何将 DJANGO 应用程序连接到通过 SSH 连接到堡垒的 AWS RDS
【发布时间】:2021-10-17 01:06:14
【问题描述】:

有没有办法将 Django 连接到通过 SSH 连接到堡垒的私有 RDS

我当前的 AWS 基础设施在 公共子网两个私有子网 中有一个 EC2 堡垒,其中 postgres 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,
    }
}

使用终端我可以 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 一起使用)

这个方法有什么我遗漏的吗?

【问题讨论】:

  • 我也有同样的问题...你解决了吗

标签: python django amazon-web-services amazon-ec2 amazon-rds


【解决方案1】:

您需要使用 putty 或 SSH 客户端创建 SSH 隧道

https://www.skyverge.com/blog/how-to-set-up-an-ssh-tunnel-with-putty/

然后使用下面的链接连接到 Django

https://gist.github.com/mhulse/1954422

【讨论】:

  • 嗯,我会尝试 PuttY,但使用上面的 DBeaver,如果我没有错,可以实现相同的目标,不是吗?
【解决方案2】:

这是一个 DNS 问题。如果您使用 IP 进行连接,您可能会解决此问题。

但是如果您需要对数据库进行名称解析,我建议您也可以在 AWS 中运行 django 以使用私有 dns 解析。

【讨论】:

  • 上面的RDS端点是数据库的IP地址,我之前在PUBLIC实例上正常使用过
猜你喜欢
  • 2018-12-19
  • 2018-07-16
  • 2022-11-08
  • 2017-11-21
  • 1970-01-01
  • 2021-10-16
  • 2021-10-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多