在这个问题上,我与用户处于类似的状态;将弹性 beanstalk 环境与现有 RDS 实例连接
我有一个 Codestar 项目(通过 Beanstalk 进行 Django),我无法让应用程序访问任何 rds 实例。在测试步骤 () 期间尝试部署时,python manage.py test
会抛出以下错误消息;
django.db.utils.OperationalError: could not connect to server: Connection timed out
Is the server running on host "172.31.44.126" and accepting
TCP/IP connections on port 5432?
我已经尝试过的事情
- 在本地运行
通过 django 和 psql 工作正常
- 使用 ipaddress 和公共主机名 (name.key.eu-west-2.rds.amazonaws.com)
两者都可以在本地正常工作并在部署时提供相同的错误消息
- 通过 EC2 实例连接 rds
这可以通过本地 ip 和名称正常连接。\d 和 \l 等查询返回很好,表明实例可以看到数据库。
- 更改 vpc / 子网
EC2 和 rds 实例都在同一个 vpc(只有一个)和子网(eu-west,可用性组 2a)中
- 启动附加的 beanstalk rds 实例
我已经使用 EBS 工具尝试了专用 rds 实例和连接实例,但应用程序无法连接到其中任何一个。
设置.py
if 'RDS_DB_NAME' in os.environ:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': os.environ['RDS_DB_NAME'],
'USER': os.environ['RDS_USERNAME'],
'PASSWORD': os.environ['RDS_PASSWORD'],
'HOST': os.environ['RDS_HOSTNAME'],
'PORT': os.environ['RDS_PORT'],
}
}
else:
DATABASES = {
'default':
{
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'postgres',
'USER': 'db_user',
'PASSWORD': 'db_pwd',
'HOST': 'db_host',
'PORT': '5432',
}
}