假设我有几个 ElasticBeanstalk 环境:
- production我的应用
- stagingMyApp
- qaMyApp
每个环境都有非常相似的 Dockerrun.aws.json(哪些卷应该链接到哪里)但不同的环境变量(例如 RDS db url 是什么、RDS 的密码是什么、mandril API 密钥是什么......)
我应该将每个环境的环境变量存储在自己的文件中(qa-Dockerrun.aws.json,prod-Dockerrun.aws.json,...)并告诉eb deploy
使用该文件(如果是这样,我该怎么做?)
或者
我应该设置环境eb setenv POSTGRES_PASS=xyzsecretabc
文档和不是将它们放入 Dockerrun.aws.json
欢迎提出其他建议
git
我当然希望避免我的敏感信息被存储在
谢谢
答案1
经过一段时间后我决定采用这个解决方案:
两样都做 :)
很难跟踪 elastic beanstalk 中的所有环境变量(并且显然有一个限制数量,没有检查),并且将数据库密码提交到版本控制是愚蠢的。
将已经公开的内容(如DB_PORT_5432_TCP_ADDR
(RDS 公共 DNS)、DB_ENV_POSTGRES_USERNAME
(postgres 用户名)REDIS_PORT_6379_TCP_ADDR
、S3_BUCKET_NAME
(资产存储桶))保留在Dockerrun.aws.json
版本控制(git)中
但DB_ENV_POSTGRES_PASSWORD
像Elastic BeanstalkSECRET_KEY_BASE
环境MANDRIL_API_TOKEN
AWS_SECRET_ACCESS_KEY