Django Settings, Git and Amazon AWS



我正在使用django,git和亚马逊的Elastic beanstalk。

使用我的django,我不想将设置文件存储在我的git上。问题是现在我无法使用EB部署,因为它在没有设置文件的情况下将我的git代码复制到我的AWS,然后失败。

我该如何告诉它保留先前的设置模块?还是我应该将设置存储在git上?这似乎很不安全..对应该如何处理的任何想法?

谢谢。

当然,存储带有变量的设置文件不是处理它的好方法。

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

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

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中。我不知道亚马逊的弹性豆stalk,但我敢肯定有一种设置Env变量的简单方法。

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

settings.py然后可以从您的local_settings.py导入所需的内容。

这不是最安全的方法,但是它确实将信息拒之门外。

最新更新