我正在使用Elastic Beanstalk的aws:elasticbeanstalk:application:environment
命名空间来使用env vars配置我的环境。如何为不同的环境设置不同的值,例如发展与生产。
发展:
option_settings:
aws:elasticbeanstalk:application:environment:
REDIS_HOST: localhost
生产:
option_settings:
aws:elasticbeanstalk:application:environment:
REDIS_HOST: prod.redis.server.com
答案 0 :(得分:2)
如何更改取决于您的部署方法。
您可以使用的一个选项是在.config
文件中设置虚假值:
option_settings:
aws:elasticbeanstalk:application:environment:
REDIS_HOST: change me
然后,在部署之后,使用AWS管理控制台或使用EB CLI修改变量:
eb setenv REDIS_HOST=prod.redis.server.com
如果您使用CloudFormation部署EB应用程序,则可以将该值作为CloudFormation模板中OptionSettings
字段的一部分提供:
"EBConfigurationTemplate" : {
"Type" : "AWS::ElasticBeanstalk::ConfigurationTemplate",
"Properties" : {
"ApplicationName" : {
"Ref" : "EBApplication"
},
"Description" : "Configuration Template",
"OptionSettings" : [
{
"Namespace" : "aws:elasticbeanstalk:application:environment",
"OptionName" : "REDIS_HOST",
"Value" : {
"Ref" : "RedisHostInputParameter"
}
},
]
也可能有其他方法,但它们将取决于部署方法。
答案 1 :(得分:2)
AWS CLI为您提供了一种方便的方法,因为update-environment
命令允许您从特殊格式的json文件中设置env变量。为要部署到的每个环境创建单独的json文件。
名为deploy-dev.json
的示例json文件:
[
{
"Namespace": "aws:elasticbeanstalk:application:environment",
"OptionName": "NODE_ENV",
"Value": "dev"
},
{
"Namespace": "aws:elasticbeanstalk:application:environment",
"OptionName": "LOG_LEVEL",
"Value": "silly"
}
]
部署应用程序,然后更新env vars:
aws elasticbeanstalk create-application-version --application-name "$EB_APP_NAME" --version-label "$EB_VERSION"
aws elasticbeanstalk update-environment --environment-name "$EB_ENV_NAME" --version-label "$EB_VERSION" --option-settings file://.ebextensions/deploy-dev.json