use*_*ser 7 django amazon-ec2 amazon-web-services google-cloud-platform
我想在应用程序启动时从云动态加载我的 Django 设置文件中的一些值,即:
将 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,
}
}
Run Code Online (Sandbox Code Playgroud)
这是一篇相关文章(@Adiii 分享):云中的 Django 设置
您可以有多个选项来加载这些配置而无需更改代码。
秘密经理
AWS Secrets Manager 可帮助您保护访问应用程序、服务和 IT 资源所需的秘密。该服务使您能够在整个生命周期中轻松轮换、管理和检索数据库凭据、API 密钥和其他机密
使用 AWS 密钥管理器,您可以更改/更新数据库主机或您的密钥,而无需更改代码。例如
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
Run Code Online (Sandbox Code Playgroud)
带有 s3 的点 ENV
Dot ENV是从其中读取键值对.env file并将它们添加到环境变量中。它非常适合使用 12 因素原则在开发和生产期间管理应用程序设置。
在启动应用程序之前,使用所有机密创建 Dot ENV 文件并将文件放在 s3 上,然后从 s3 中提取文件并启动应用程序。
import os
SECRET_KEY = os.getenv("EMAIL")
db_password = os.getenv("db_password")
Run Code Online (Sandbox Code Playgroud)
另一种选择是仅使用系统环境变量。
db_password=os.getenv('db_password', default_pass)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
714 次 |
| 最近记录: |