繁体   English   中英

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>

希望这可以帮助。

您可以通过.ebextentions配置文件运行manage.py ,但需要首先加载您的环境变量

由于您没有提供任何配置文件,我可以举例说明您可以尝试基于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>

以上仅为示例,因此您需要根据您的设置进行调整。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM