【问题标题】:Can't connect to RDS Postgres locally after setting up NAT instance设置 NAT 实例后无法本地连接到 RDS Postgres
【发布时间】:2019-03-23 19:20:45
【问题描述】:

我正在开发一个 Django 项目,该项目使用 Zappa 在 Lambda 上托管无服务器应用程序。它在背面使用 Postgres 数据库,我已经能够完美地使用它一段时间了。最近需要用到urllib,所以需要一个NAT实例(EC2微实例)来让Lambda上网。

现在它已经设置好,它在生产中运行良好,我可以看到我的网站正常并且所有部分都可以正确交互。但是,在本地,Django 似乎无法连接,它得到了这个错误:

django.db.utils.OperationalError:无法连接到服务器:连接超时(0x0000274C/10060)
服务器是否在主机“XXXXXXXXX.XXXXXXXXX.us-west-2.rds.amazonaws.com”(54.70.245.158)上运行并接受 端口 5432 上的 TCP/IP 连接?

为了概述我所经历的步骤,我通过向导创建了一个包含私有子网和公有子网的 VPC 网络。为了可用性,我在其他区域添加了另外 2 个私有子网。我转到我的 Lambda 函数并将子网更改为新子网,我还将我的 RDS 移动到相同的子网(私有子网)。对于我的 RDS,我为 Postgres 创建了一个新的安全组(端口 5432 入站,源为 0.0.0.0/0)。

我在Django下的settings.py不变:

DATABASES = {
    # AMAZON RDS Instance
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'XXXXXXXXX',
        'USER': 'XXXXXXXXX',
        'PASSWORD': 'XXXXXXXXX',
        'HOST': 'XXXXXXXXXX.XXXXXXXXXX.us-west-2.rds.amazonaws.com',
        'PORT': '5432',
    }
}

我不知道从这里去哪里。老实说,这超出了我的舒适区,我不知道自己在做什么。我的怀疑是我需要与安全组做一些事情,但我在我的头上,非常感谢一些帮助。谢谢!

【问题讨论】:

    标签: django postgresql amazon-rds amazon-vpc python-zappa


    【解决方案1】:

    经过一番摆弄,我意识到我把事情复杂化了。 RDS 应保留在它启动的子网中,无需将其带到与 NAT 实例相同的子网中。一旦我将它移回原来的子网,它在本地和生产中都运行良好。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-04-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-06
      • 2013-05-26
      • 1970-01-01
      • 2016-09-30
      相关资源
      最近更新 更多