将敏感环境变量包括到 AWS EB Django 应用程序
Posted
技术标签:
【中文标题】将敏感环境变量包括到 AWS EB Django 应用程序【英文标题】:Include sensitive environment variables to AWS EB Django app 【发布时间】: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 这里的最佳做法是什么?还有其他计划吗?【问题讨论】:
【参考方案1】:关于计划 B - this answer 展示了一种将 .env 中的所有变量转储到 eb setenv ...
command 的好方法!
【讨论】:
以上是关于将敏感环境变量包括到 AWS EB Django 应用程序的主要内容,如果未能解决你的问题,请参考以下文章
当 EB 环境为 python 3.6 时,使用 python 2.7 安装要求时出现 AWS 错误
将 SSL 添加到使用 aws eb cli 构建的 Web 应用程序