django - 将敏感环境变量包含到 AWS EB Django 应用程序
问题描述
我正在将 django 应用程序部署到 AWS Elastic Beanstalk,最初我在.ebextensions/django.config
其中一些变量是敏感的,我不想将它们推送到 Git,所以我想将这些变量封装在一个不会被推送到 Git 的文件中(例如:.env)。
计划一:
一种在我的配置文件中包含 .env 的方法,但我没有找到一种方法来执行它,应该是这样的:
option_settings:
aws:elasticbeanstalk:application:environment:
include .env
aws:elasticbeanstalk:container:python:
WSGIPath: mydjangoapp.wsgi:application
缺点:
- 环境变量在 AWS 控制台中显示为纯文本
Elastic Beanstalk > Environments > my-environment > Configuration > Environment properties
,尽管我知道它们只能由拥有权限的授权 AWS 用户读取。
优点:
- 能够仅从 AWS 控制台直接更新环境变量,而无需进行新部署。
B计划:
与计划 A 几乎相同,但在配置文件中不包含 .env 文件。是eb setenv
用来设置敏感环境的,但是要一个一个显式输入,而不是从外部文件中输入,所以很多的话很头疼
计划 C:
从我的配置文件中完全删除敏感变量,并从我的 django 应用程序本身加载 .env 文件。
缺点:
- 如果我想更新这些变量中的任何一个,我必须部署我的应用程序的新版本。
- 虽然 .env 文件不会推送到 Git 并且可以在内部开发者之间共享,但它应该与部署包一起推送,它会出现在应用程序 ec2 实例目录中。
优点:
- 甚至从 AWS 控制台隐藏敏感信息
问题:
- A计划是否适用?我可以在谷歌云应用引擎 yaml 文件中做同样的事情,但我找不到在 AWS EB 配置中执行此操作的方法https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/beanstalk-environment-configuration -advanced.html
- 这里的最佳做法是什么?还有其他计划吗?
解决方案
关于计划 B -这个答案显示了将所有变量从 .env 转储到eb setenv ...
命令中的好方法!
推荐阅读
- java - 读取文件时出现未知源错误
- sql - B树索引好像没有用?
- node.js - Webdriver.io (wdio) - Browserstack - waitforDisplayed 失败
- nltk - 使用 `nltk.parse.corenlp.CoreNLPParser` 时自定义标记器
- form-submit - 表单提交错误:激活链接在激活后一直发送
- javascript - 创建对象最安全的方法是什么(工厂、类、Eventmittler3)
- vue.js - Nuxt.js - 谷歌分析设置不跟踪任何活动
- javascript - Mapbox & D3:如何创建适当的颜色缩放?
- reactjs - 仅更改 State şin React 的一项属性
- firebase - Flutter Firestore > Streambuilder > ListView to detailpage onTap