Django设置、Git和Amazon AWS

Django设置、Git和Amazon AWS,django,git,amazon-web-services,amazon-ec2,Django,Git,Amazon Web Services,Amazon Ec2,我正在使用Django、Git和Amazon的Elastic Beanstalk 使用Django,我不想将设置文件存储在git上。问题是现在我不能使用eb deploy,因为它将我的git代码复制到我的AWS,而没有设置文件,然后失败 我如何告诉它保留以前的设置模块?或者我应该将设置存储在git上?这似乎很不安全。。关于如何处理这件事有什么想法吗 谢谢。您可以创建一个local_settings.py文件,将您的机密信息放入其中,然后将该文件添加到.gitignore文件中 settings.

我正在使用Django、Git和Amazon的Elastic Beanstalk

使用Django,我不想将设置文件存储在git上。问题是现在我不能使用eb deploy,因为它将我的git代码复制到我的AWS,而没有设置文件,然后失败

我如何告诉它保留以前的设置模块?或者我应该将设置存储在git上?这似乎很不安全。。关于如何处理这件事有什么想法吗


谢谢。

您可以创建一个
local_settings.py
文件,将您的机密信息放入其中,然后将该文件添加到
.gitignore
文件中

settings.py
然后可以从您的
local\u settings.py
导入所需内容


这并不是最安全的方法,但它确实可以将信息隐藏在git repo之外。

当然,将设置文件中的变量存储在其中并不是一种好的处理方法

存储敏感设置最明显的方法是使用ENV变量,并使用从设置中读取本地ENV变量

所以,将设置文件保存在git上,但从中删除所有敏感变量。并使用
os.environ
动态设置这些变量。下面是我用来从
ENV
读取
设置
变量的快捷方式:

import os

def get_env_variable(var_name, **kwargs):
    """
    Try to get the settings in the current os environment using the given name.
    Raise if the name is not found, except if the 'default' key is given in
    kwargs (using kwargs allows to pass a default to None, which is different as not passing any default):
    >>> get_env_variable('foo') # raise if `foo` not defined
    >>> get_env_variable('foo', default='bar') # will return 'bar' if `foo` is not defined
    >>> get_env_variable('foo', default=None) # will return `None` if `foo` is not defined
    """
    try:
        return os.environ[var_name]
    except KeyError:
        if 'default' in kwargs:
            return kwargs['default']
        raise ImproperlyConfigured(
            "Please set the '%s' environment variable." % var_name
        ) 
您可以在设置中这样使用它:

DATABASES = {
    'default': {
        'ENGINE': '<engine>',
        'NAME': get_env_variable('DATABASE_NAME'),
        'USER': get_env_variable('DATABASE_USER'),
        'PASSWORD': get_env_variable('DATABASE_PASSWORD'),
        'HOST': get_env_variable('DATABASE_HOST'),
        'PORT': get_env_variable('DATABASE_PORT')
    }
}
数据库={
“默认值”:{
“引擎”:“,
“名称”:获取环境变量(“数据库名称”),
“用户”:获取环境变量(“数据库用户”),
“密码”:获取环境变量(“数据库密码”),
“主机”:获取环境变量(“数据库主机”),
“端口”:获取环境变量(“数据库端口”)
}
}

这样,设置文件中就不会存储任何敏感信息。你可以把它放在你的git里。我不知道Amazon的Elastic Beanstalk,但我相信有一种简单的方法可以设置环境变量。

是的,我基本上已经这样做了。它从我的git存储库中取出。问题是,现在当我尝试部署到AWS时,它不会上载我的设置,因此部署失败。这是可行的。将凭据存储在环境变量中是否安全?我想它和任何东西一样安全。