Zappa + RDS 连接问题
Zappa + RDS Connection Issues
我希望有人能帮我解决一些关于 VPC 的问题。我是 AWS 的新手,我只是想构建一个示例 Web 应用程序来熟悉所有内容。我一直在大致按照 this guide 尝试使用 Zappa + Django 设置一个基本项目。我已经到了配置 VPC 并尝试添加 Django/zappa 可以与之通信的 Postgres 实例的状态。根据那篇文章,我已经像这样设置了我的网络:
- 连接到 VPC 的 Internet 网关
- 4 Public 个子网
- 4 个私有子网
- 2 个私有子网中的 Lambda 函数
- 在其他 2 个私有子网中具有子网组的 RDS
- 1 public 子网中的 EC2 框允许 SSH 从我的本地 IP 将端口 5432 转发到 RDS 实例
当我尝试使用 "python manage.py makemigrations" 在我的本地计算机上 运行 迁移时,我的问题就出现了。我不断收到一条错误消息,显示 "Is the server running on host "zappadbinstance.xxxxx.rds.amazonaws.com" (192.168.x.xxx) 并在端口 5432 上接受 TCP/IP 连接?"。
我不确定我错过了哪一步。我按照 this guide and this post 设置堡垒主机,我知道它正在工作,因为我能够 (1) 从我的终端 ssh 和 (2) 在我的本地机器上使用 PSequel 建立数据库连接。
我觉得我真的很接近,但我一定错过了什么。任何帮助或指点将不胜感激。
首先,这项设置做得很好 - 这是一个相当大的挑战。我同意你的看法,你快到了。由于您可以从本地系统连接 PSequel,这可以从网络角度验证您的机器是否已准确连接到 VPC RDS。
下一个要查看的区域是 Django 设置。如果本机Django设置不正确,就会出现这个错误。所以你的设置文件中的数据库部分在本地机器上应该是不同的。正如您在上面的评论之一中所述,我相信您有
'HOST': 'xxxxx.us-east-2.rds.amazonaws.com'
当您 运行 python manage.py makemigrations
时,django 会尝试使用该主机名并连接到它。不幸的是,这会绕过您精心构建的 ssh 隧道。
要解决此问题,您可以:
- 编辑您的本地 settings.py 以获得
'HOST':'127.0.0.1'
- 编辑您的
/etc/hosts
文件以指向上面的 FQDN(但我不推荐这样做,因为我经常忘记删除编辑内容)
尝试上面的 #1 应该很容易,看看是否可行。
我希望有人能帮我解决一些关于 VPC 的问题。我是 AWS 的新手,我只是想构建一个示例 Web 应用程序来熟悉所有内容。我一直在大致按照 this guide 尝试使用 Zappa + Django 设置一个基本项目。我已经到了配置 VPC 并尝试添加 Django/zappa 可以与之通信的 Postgres 实例的状态。根据那篇文章,我已经像这样设置了我的网络:
- 连接到 VPC 的 Internet 网关
- 4 Public 个子网
- 4 个私有子网
- 2 个私有子网中的 Lambda 函数
- 在其他 2 个私有子网中具有子网组的 RDS
- 1 public 子网中的 EC2 框允许 SSH 从我的本地 IP 将端口 5432 转发到 RDS 实例
当我尝试使用 "python manage.py makemigrations" 在我的本地计算机上 运行 迁移时,我的问题就出现了。我不断收到一条错误消息,显示 "Is the server running on host "zappadbinstance.xxxxx.rds.amazonaws.com" (192.168.x.xxx) 并在端口 5432 上接受 TCP/IP 连接?"。
我不确定我错过了哪一步。我按照 this guide and this post 设置堡垒主机,我知道它正在工作,因为我能够 (1) 从我的终端 ssh 和 (2) 在我的本地机器上使用 PSequel 建立数据库连接。
我觉得我真的很接近,但我一定错过了什么。任何帮助或指点将不胜感激。
首先,这项设置做得很好 - 这是一个相当大的挑战。我同意你的看法,你快到了。由于您可以从本地系统连接 PSequel,这可以从网络角度验证您的机器是否已准确连接到 VPC RDS。
下一个要查看的区域是 Django 设置。如果本机Django设置不正确,就会出现这个错误。所以你的设置文件中的数据库部分在本地机器上应该是不同的。正如您在上面的评论之一中所述,我相信您有
'HOST': 'xxxxx.us-east-2.rds.amazonaws.com'
当您 运行 python manage.py makemigrations
时,django 会尝试使用该主机名并连接到它。不幸的是,这会绕过您精心构建的 ssh 隧道。
要解决此问题,您可以:
- 编辑您的本地 settings.py 以获得
'HOST':'127.0.0.1'
- 编辑您的
/etc/hosts
文件以指向上面的 FQDN(但我不推荐这样做,因为我经常忘记删除编辑内容)
尝试上面的 #1 应该很容易,看看是否可行。