设置NAT实例后无法在本地连接到RDS Postgres

用户名

我正在使用Zappa在Lambda上托管无服务器应用程序的Django项目中工作。它在背面使用了Postgres数据库,一段时间以来,我一直可以完美使用它。最近,我需要使用urllib,因此我需要一个NAT实例(EC2微型实例)以允许Lambda访问Internet。

现在,它已经设置好,可以在生产环境中正常工作了,我可以看到我的网站很好,并且所有部分都可以正确交互。但是,在本地,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',
    }
}

我不确定从这里去哪里。老实说,这超出了我的舒适范围,我不知道自己在做什么。我怀疑安全组需要做些事情,但是我不知所措,非常感谢您的帮助。谢谢!

用户名

经过一番摆弄之后,我意识到我已经把事情复杂化了。RDS应该保留在启动时所在的子网中,无需将其移到与NAT实例相同的子网中。将其移回原始子网后,它在本地和生产环境中均可以正常运行。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章