Django AWS RDS 环境变量未在 Elastic Beanstalk 中设置
Django AWS RDS environment variables not setting in Elastic Beanstalk
我在 AWS Elastic Beanstalk 实例中使用 Amazon Linux 2 来托管我的 Django Web 服务器。在我的环境中使用 SSH 连接时,我无法使用 运行 manage.py 命令,因为 os.environ
不包含我的 RDS 数据库的环境变量。因此,在我的 settings.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_psycopg2',
'NAME': 'home',
'USER': '',
'PASSWORD': '',
'HOST': 'localhost',
'PORT': '5432',
}
}
它认为我还在本地主机上,它给我一个错误。我该如何解决这个问题?有没有一种方法可以通过 /opt/elasticbeanstalk/bin/get-config environment
命令加载我的 RDS 环境变量,或者是否有另一种不需要 SSH 的方法?
更新:
根据@Marcin 的回答,我在本地终端中使用以下命令通过 SSH 连接到我的 EC2 实例并手动进行更新:
eb ssh
(出现提示时输入密码)
source /var/app/venv/staging-LQM1lest/bin/activate
export $(cat /opt/elasticbeanstalk/deployment/env | xargs)
要进入文件所在的正确目录:
cd /var/app/current
现在您可以运行:
python manage.py <your command>
希望对您有所帮助。
您可以 运行 manage.py
通过您的 .ebextentions
配置文件,但需要先 加载您的环境变量.
由于您没有提供任何配置文件,我可以举例说明您可以尝试基于 Amazon Linux 2 的 EB 平台(对于 AL1,它是不同):
container_commands:
10_run_manage_py:
command: |
export $(cat /opt/elasticbeanstalk/deployment/env | xargs)
source $PYTHONPATH/activate
python ./manage.py <your command>
以上仅为示例,因此您需要根据自己的设置进行调整。
我在 AWS Elastic Beanstalk 实例中使用 Amazon Linux 2 来托管我的 Django Web 服务器。在我的环境中使用 SSH 连接时,我无法使用 运行 manage.py 命令,因为 os.environ
不包含我的 RDS 数据库的环境变量。因此,在我的 settings.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_psycopg2',
'NAME': 'home',
'USER': '',
'PASSWORD': '',
'HOST': 'localhost',
'PORT': '5432',
}
}
它认为我还在本地主机上,它给我一个错误。我该如何解决这个问题?有没有一种方法可以通过 /opt/elasticbeanstalk/bin/get-config environment
命令加载我的 RDS 环境变量,或者是否有另一种不需要 SSH 的方法?
更新:
根据@Marcin 的回答,我在本地终端中使用以下命令通过 SSH 连接到我的 EC2 实例并手动进行更新:
eb ssh
(出现提示时输入密码)
source /var/app/venv/staging-LQM1lest/bin/activate
export $(cat /opt/elasticbeanstalk/deployment/env | xargs)
要进入文件所在的正确目录:
cd /var/app/current
现在您可以运行:
python manage.py <your command>
希望对您有所帮助。
您可以 运行 manage.py
通过您的 .ebextentions
配置文件,但需要先 加载您的环境变量.
由于您没有提供任何配置文件,我可以举例说明您可以尝试基于 Amazon Linux 2 的 EB 平台(对于 AL1,它是不同):
container_commands:
10_run_manage_py:
command: |
export $(cat /opt/elasticbeanstalk/deployment/env | xargs)
source $PYTHONPATH/activate
python ./manage.py <your command>
以上仅为示例,因此您需要根据自己的设置进行调整。