连接到Django后端的AWS Postgres实例
我在AWS上创建了一个PostgreSQL数据库,我想用于Django项目 我修改了settings.py,使其具有连接到Django后端的AWS Postgres实例,django,postgresql,amazon-web-services,django-database,Django,Postgresql,Amazon Web Services,Django Database,我在AWS上创建了一个PostgreSQL数据库,我想用于Django项目 我修改了settings.py,使其具有 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql', 'NAME': <db name>, 'USER': <user>, 'PASSWORD': <password>,
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': <db name>,
'USER': <user>,
'PASSWORD': <password>,
'HOST': 'projectdevelopment.foobar.us-east-1.rds.amazonaws.com',
'PORT': '5432',
}
}
值projectdevelopment.foobar.us-east-1.rds.amazonaws.com
已直接从rds控制台中endpoint下的值复制
我是否缺少设置或配置错误?或者两者都有?确保服务器已启动并从 亚马逊的末日 检查这个,他们有同样的问题
或 尝试使用
'ENGINE'='django.db.backends.postgresql\u psycopg2'
,检查此项
阅读:
或 尝试分配
数据库\u URL
,以便将RDS postgres连接到您的django应用程序
DATABASE_URL=postgis://<user>:<password>@<host>:<port>/<db-name>
在您的情况下,数据库\u URL
将被删除
postgis://:
@projectdevelopment.foobar.us-east-1.rds.amazonaws.com
:5432
/
是postgres服务器使用的默认端口5432
看起来你用错了引擎。此外,如果您的应用程序没有使用诸如Elastic Beanstalk之类的托管服务,请确保将RDS实例的安全组添加到应用程序环境中,以便应用程序能够访问RDS实例 如果你使用弹性豆茎:或 如果您没有使用elastic beanstalk,最有可能的问题是VPC。请参阅讨论,直接使用RDS配置EC2。
官方文档对该场景进行了很好的解释。您的主机字符串错误
(venv) duddits@dev:~/movina$ host projectdevelopment.foobar.us-east-1.rds.amazonaws.com
Host projectdevelopment.foobar.us-east-1.rds.amazonaws.com not found: 3(NXDOMAIN)
(venv) duddits@dev:~/movina$ dig projectdevelopment.foobar.us-east-1.rds.amazonaws.com
; <<>> DiG 9.10.3-P4-Ubuntu <<>> projectdevelopment.foobar.us-east-1.rds.amazonaws.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 30254
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;projectdevelopment.foobar.us-east-1.rds.amazonaws.com. IN A
;; AUTHORITY SECTION:
us-east-1.rds.amazonaws.com. 55 IN SOA ns-1420.awsdns-49.org. awsdns-hostmaster.amazon.com. 1 7200 900 1209600 86400
;; Query time: 0 msec
;; SERVER: 109.197.120.67#53(109.197.120.67)
;; WHEN: Thu Jan 25 04:43:44 +07 2018
;; MSG SIZE rcvd: 164
(venv)duddits@dev:~/movina$host projectdevelopment.foobar.us-east-1.rds.amazonaws.com
找不到主机projectdevelopment.foobar.us-east-1.rds.amazonaws.com:3(NXDOMAIN)
(venv)duddits@dev:~/movina$dig projectdevelopment.foobar.us-east-1.rds.amazonaws.com
; DiG 9.10.3-P4-ubuntuprojectdevelopment.foobar.us-east-1.rds.amazonaws.com
;; 全局选项:+cmd
;; 得到答案:
;; ->>Headera您是从其他AWS资源(如EC2或Lambda)连接,还是从AWS外部连接?您是否已将RDS实例配置为可从AWS外部访问?如果我没记错的话,默认情况下只有通过VPC连接才能访问。如果它是一个非常新的实例,它可能需要一两个小时才能传播到您的DNS提供商。首先,确保可以将主机名解析为IP地址,例如通过执行nslookup
或类似的DNS查询。例如nslookup my.rdsinstance.us-east-1.rds.amazonaws.com 8.8.8
查询谷歌的公共DNS。是的,它可以公开访问。该实例已经存在了将近24小时。您可以使用pgadmin工具连接到该实例吗?如果已使实例可公开访问,是否可以使用公共IP而不是主机名进行连接?这个错误表明主机名无法解析。嘿@Batman,我想知道,有什么答案有用吗?
DATABASES['default'] = DATABASE_URL
(venv) duddits@dev:~/movina$ host projectdevelopment.foobar.us-east-1.rds.amazonaws.com
Host projectdevelopment.foobar.us-east-1.rds.amazonaws.com not found: 3(NXDOMAIN)
(venv) duddits@dev:~/movina$ dig projectdevelopment.foobar.us-east-1.rds.amazonaws.com
; <<>> DiG 9.10.3-P4-Ubuntu <<>> projectdevelopment.foobar.us-east-1.rds.amazonaws.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 30254
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;projectdevelopment.foobar.us-east-1.rds.amazonaws.com. IN A
;; AUTHORITY SECTION:
us-east-1.rds.amazonaws.com. 55 IN SOA ns-1420.awsdns-49.org. awsdns-hostmaster.amazon.com. 1 7200 900 1209600 86400
;; Query time: 0 msec
;; SERVER: 109.197.120.67#53(109.197.120.67)
;; WHEN: Thu Jan 25 04:43:44 +07 2018
;; MSG SIZE rcvd: 164