【发布时间】:2020-09-18 20:54:50
【问题描述】:
我正在将一个 django 应用程序部署到 AWS Elastic Beanstalk,最初我在 .ebextensions/django.config 中定义我的环境变量
其中一些变量是敏感的,我不想将它们推送到 Git,所以我想将这些变量封装在一个不会被推送到 Git 的文件中(例如:.env)。
A 计划:
一种在我的配置文件中包含 .env 的方法,但我没有找到一种方法来实现它,应该是这样的:
option_settings:
aws:elasticbeanstalk:application:environment:
include .env
aws:elasticbeanstalk:container:python:
WSGIPath: mydjangoapp.wsgi:application
缺点:
- 环境变量在
Elastic Beanstalk > Environments > my-environment > Configuration > Environment properties的 AWS 控制台中以纯文本形式显示,尽管我知道只有拥有权限的授权 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
- 这里的最佳做法是什么?还有其他计划吗?
【问题讨论】:
标签: django amazon-web-services amazon-ec2 amazon-elastic-beanstalk