gpt4 book ai didi

Django - 是否可以直接在设置文件中从云服务加载 secret /密码/动态值

转载 作者:行者123 更新时间:2023-12-03 14:31:59 31 4
gpt4 key购买 nike

我想在应用程序启动时从云动态加载我的 Django 设置文件中的一些值,即:

  • 数据库密码
  • 数据库IP地址

  • 将 python 代码添加到设置文件以从云中检索这些值是否是一个好习惯?
    我相信这些只会在应用程序启动时加载一次,即它们不会对我的应用程序的性能产生不利影响。
    例如 :
    # ~ settings.py ~

    # retrieve data from the cloud, directly in the settings file
    db_password = get_my_secrets()
    db_ip_address = discover_db_ip()

    # configure the database with these dynamic values
    DATABASES = {
    'default': {
    'PASSWORD': db_password,
    'HOST' : db_ip_address,
    }
    }
    这是一篇相关文章(由@Adiii 分享): Django Settings In the Cloud

    最佳答案

    您可以有多个选项来加载这些配置而无需更改代码。

  • AWS secret manager
  • 来自 s3 的点 env 文件
  • 环境变量

  • Secrets-manager

    AWS Secrets Manager helps you protect secrets needed to access yourapplications, services, and IT resources. The service enables you toeasily rotate, manage, and retrieve database credentials, API keys,and other secrets throughout their lifecycle


    使用 AWS key 管理器,您可以更改/更新数据库主机或您的 key ,而无需更改代码。例如
        secret_name = "db_password"
    region_name = "us-west-2"
    # Create a Secrets Manager client
    session = boto3.session.Session()
    client = session.client(
    service_name='secretsmanager',
    region_name=region_name
    )
    get_secret_value_response = client.get_secret_value(SecretId=secret_name)
    db_password = get_secret_value_response
    secrets-manager
    带有 s3 的点 ENV
    Dot ENV is 从 .env file 读取键值对并将它们添加到环境变量中。它非常适合使用 12 因素原则在开发和生产期间管理应用程序设置。
    在启动应用程序之前,使用所有 secret 创建 Dot ENV 文件并将文件放在 s3 上,然后从 s3 中提取文件并启动应用程序。
    import os
    SECRET_KEY = os.getenv("EMAIL")
    db_password = os.getenv("db_password")
    Python Dot ENv
    另一种选择是仅使用系统环境变量。
    db_password=os.getenv('db_password', default_pass)

    关于Django - 是否可以直接在设置文件中从云服务加载 secret /密码/动态值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62731665/

    31 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com