1

我希望有人可以帮助我解决一些关于 VPC 的问题。我对 AWS 很陌生,我只是想构建一个示例 Web 应用程序来让我的脚湿透一切。我一直在大致按照本指南尝试使用 Zappa + Django 设置一个基本项目。我已经达到了配置 VPC 并尝试添加 Django/zappa 可以与之通信的 Postgres 实例的状态。根据那篇文章,我已经像这样设置了我的网络:

  • 连接到 VPC 的 Internet 网关
  • 4 公共子网
  • 4 私有子网
  • 2 个私有子网中的 Lambda 函数
  • RDS 与其他 2 个私有子网中的子网组
  • 1 个公共子网中的 EC2 框,允许来自我的本地 IP 的 SSH 将端口 5432 转发到 RDS 实例

当我尝试使用“python manage.py makemigrations”在本地机器上运行迁移时,我的问题就出现了。我不断收到一条错误消息,提示“服务器是否在主机“zappadbinstance.xxxxx.rds.amazonaws.com”(192.168.x.xxx)上运行并接受端口 5432 上的 TCP/IP 连接?”。

我不确定我错过了哪一步。我按照本指南这篇文章来设置堡垒主机,我知道它正在工作,因为我能够(1)从我的终端 ssh 和(2)在我的本地机器上使用 PSequel 建立数据库连接。

我觉得我真的很亲近,但我一定错过了一些东西。任何帮助或指示将不胜感激。

4

1 回答 1

1

首先,很好地完成了这个设置 - 这是一个相当大的挑战。我同意你的观点,你快到了。由于您可以从本地系统连接到 PSequel,因此从网络角度验证您的机器已准确连接到 VPC RDS。

下一个要查看的区域是 Django 设置。如果本地机器 Django 设置不正确,这将导致错误。因此,设置文件中的数据库部分在本地计算机上应该不同。正如您在上面的评论之一中所描述的那样,我相信您 'HOST': 'xxxxx.us-east-2.rds.amazonaws.com' 在运行时python manage.py makemigrations,django 会尝试使用该主机名并连接到它。不幸的是,这绕过了您精心构建的 ssh 隧道。

要解决此问题,您可以:

  1. 编辑您的本地 settings.py 以拥有'HOST':'127.0.0.1'
  2. 编辑您的/etc/hosts文件以指向上面的 FQDN(但我不建议这样做,因为我经常忘记删除编辑)

应该很容易尝试上面的#1,看看它是否有效。

于 2018-08-21T01:48:20.563 回答