首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AWS Elastic Beanstalk -在环境之间切换环境变量

AWS Elastic Beanstalk -在环境之间切换环境变量
EN

Stack Overflow用户
提问于 2017-11-15 03:01:18
回答 2查看 1.3K关注 0票数 6

我使用Elastic Beanstalk的aws:elasticbeanstalk:application:environment名称空间通过env变量配置我的环境。如何为不同的环境设置不同的值(例如开发与生产)?

开发:

代码语言:javascript
复制
option_settings:
  aws:elasticbeanstalk:application:environment:
    REDIS_HOST: localhost

生产:

代码语言:javascript
复制
option_settings:
  aws:elasticbeanstalk:application:environment:
    REDIS_HOST: prod.redis.server.com
EN

回答 2

Stack Overflow用户

发布于 2018-01-17 07:58:32

AWS CLI为您提供了一种方便的方法,因为update-environment命令允许您从特殊格式的json文件设置环境变量。为要部署到的每个环境创建单独的json文件。

名为deploy-dev.json的示例json文件

代码语言:javascript
复制
[
  {
    "Namespace": "aws:elasticbeanstalk:application:environment",
    "OptionName": "NODE_ENV",
    "Value": "dev"
  },
  {
    "Namespace": "aws:elasticbeanstalk:application:environment",
    "OptionName": "LOG_LEVEL",
    "Value": "silly"
  }
]

部署应用程序,然后更新环境变量:

代码语言:javascript
复制
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
票数 4
EN

Stack Overflow用户

发布于 2017-11-15 03:15:42

它的更改方式取决于您的部署方法。

您可以使用的一个选项是在.config文件中设置一个伪值:

代码语言:javascript
复制
option_settings:
  aws:elasticbeanstalk:application:environment:
    REDIS_HOST: change me

然后,在部署后,使用AWS管理控制台或EB CLI修改变量:

代码语言:javascript
复制
eb setenv REDIS_HOST=prod.redis.server.com

如果您使用CloudFormation来部署您的EB应用程序,则可以将该值作为CloudFormation模板中OptionSettings字段的一部分提供:

代码语言:javascript
复制
    "EBConfigurationTemplate" : {
        "Type" : "AWS::ElasticBeanstalk::ConfigurationTemplate",
        "Properties" : {
            "ApplicationName" : {
                "Ref" : "EBApplication"
            },
            "Description"     : "Configuration Template",
            "OptionSettings"  : [
                {
                    "Namespace" : "aws:elasticbeanstalk:application:environment",
                    "OptionName" : "REDIS_HOST",
                    "Value"      : {
                        "Ref" : "RedisHostInputParameter"
                    }
                },
            ]

可能还有其他方法,但它们将取决于部署的方法。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47293372

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档