设置 NAT 实例后无法在本地连接到 RDS Postgres
Can't connect to RDS Postgres locally after setting up NAT instance
我正在开发一个 Django 项目,该项目使用 Zappa 在 Lambda 上托管无服务器应用程序。它在背面使用了 Postgres 数据库,我已经能够完美地使用它一段时间了。最近需要用到urllib,所以需要一个NAT实例(EC2微实例)让Lambda可以上网
现在它已经设置好,在生产环境中运行良好,我可以正常查看我的网站并且所有部分都可以正确交互。但是,在本地,Django 似乎无法连接,出现此错误:
django.db.utils.OperationalError: could not connect to server: Connection timed out (0x0000274C/10060)
Is the server running on host "XXXXXXXXX.XXXXXXXXX.us-west-2.rds.amazonaws.com" (54.70.245.158) and accepting
TCP/IP connections on port 5432?
为了概述我完成的步骤,我通过向导创建了一个包含私有和 public 子网的 VPC 网络。为了可用性,我在其他区域添加了 2 个私有子网。我转到我的 Lambda 函数并将子网更改为新子网,我还将我的 RDS 移动到相同的子网(私有子网)。对于我的 RDS,我为 Postgres 创建了一个新的安全组(端口 5432 入站,源 0.0.0.0/0)。
我的settings.py在Django下还是一样:
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 实例相同的子网上。一旦我将它移回原始子网,它在本地和生产中都运行良好。
我正在开发一个 Django 项目,该项目使用 Zappa 在 Lambda 上托管无服务器应用程序。它在背面使用了 Postgres 数据库,我已经能够完美地使用它一段时间了。最近需要用到urllib,所以需要一个NAT实例(EC2微实例)让Lambda可以上网
现在它已经设置好,在生产环境中运行良好,我可以正常查看我的网站并且所有部分都可以正确交互。但是,在本地,Django 似乎无法连接,出现此错误:
django.db.utils.OperationalError: could not connect to server: Connection timed out (0x0000274C/10060)
Is the server running on host "XXXXXXXXX.XXXXXXXXX.us-west-2.rds.amazonaws.com" (54.70.245.158) and accepting TCP/IP connections on port 5432?
为了概述我完成的步骤,我通过向导创建了一个包含私有和 public 子网的 VPC 网络。为了可用性,我在其他区域添加了 2 个私有子网。我转到我的 Lambda 函数并将子网更改为新子网,我还将我的 RDS 移动到相同的子网(私有子网)。对于我的 RDS,我为 Postgres 创建了一个新的安全组(端口 5432 入站,源 0.0.0.0/0)。
我的settings.py在Django下还是一样:
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 实例相同的子网上。一旦我将它移回原始子网,它在本地和生产中都运行良好。