![我应该为 aws eb 使用不同的 Dockerrun.aws.json 文件还是通过 eb 控制台设置环境变量](https://linux22.com/image/671379/%E6%88%91%E5%BA%94%E8%AF%A5%E4%B8%BA%20aws%20eb%20%E4%BD%BF%E7%94%A8%E4%B8%8D%E5%90%8C%E7%9A%84%20Dockerrun.aws.json%20%E6%96%87%E4%BB%B6%E8%BF%98%E6%98%AF%E9%80%9A%E8%BF%87%20eb%20%E6%8E%A7%E5%88%B6%E5%8F%B0%E8%AE%BE%E7%BD%AE%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F.png)
假设我有几个 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