我使用Elastic Beanstalk的aws:elasticbeanstalk:application:environment名称空间通过env变量配置我的环境。如何为不同的环境设置不同的值(例如开发与生产)?
开发:
option_settings:
aws:elasticbeanstalk:application:environment:
REDIS_HOST: localhost生产:
option_settings:
aws:elasticbeanstalk:application:environment:
REDIS_HOST: prod.redis.server.com发布于 2018-01-17 07:58:32
AWS CLI为您提供了一种方便的方法,因为update-environment命令允许您从特殊格式的json文件设置环境变量。为要部署到的每个环境创建单独的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"
}
]部署应用程序,然后更新环境变量:
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发布于 2017-11-15 03:15:42
它的更改方式取决于您的部署方法。
您可以使用的一个选项是在.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"
}
},
]可能还有其他方法,但它们将取决于部署的方法。
https://stackoverflow.com/questions/47293372
复制相似问题