Django设置,Git和亚马逊AWS

时间:2017-12-01 03:34:16

标签: django git amazon-web-services amazon-ec2

我正在使用Django,Git和亚马逊的Elastic Beanstalk。

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

如何告诉它保留以前的设置模块?或者我应该将我的设置存储在git上?这似乎很不安全..有关如何处理这个的任何想法?

感谢。

2 个答案:

答案 0 :(得分:0)

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

然后,

settings.py可以从local_settings.py导入所需内容。

这不是最安全的方法,但确实会将信息保存在您的git仓库之外。

答案 1 :(得分:0)

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

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

所以请在git上保留设置文件,但要从中删除所有敏感变量。并使用os.environ动态设置这些变量。以下是我用来从setting

中读取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中。我不知道亚马逊的Elastic Beanstalk,但我确信有一种简单的方法来设置ENV变量。