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

McL*_*vin 6 amazon-ec2 amazon-web-services node.js amazon-elastic-beanstalk

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

发展:

option_settings:
  aws:elasticbeanstalk:application:environment:
    REDIS_HOST: localhost
Run Code Online (Sandbox Code Playgroud)

生产:

option_settings:
  aws:elasticbeanstalk:application:environment:
    REDIS_HOST: prod.redis.server.com
Run Code Online (Sandbox Code Playgroud)

Mat*_*ser 2

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

您可以使用的一种选择是在文件中设置一个虚假值.config

option_settings:
  aws:elasticbeanstalk:application:environment:
    REDIS_HOST: change me
Run Code Online (Sandbox Code Playgroud)

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

eb setenv REDIS_HOST=prod.redis.server.com
Run Code Online (Sandbox Code Playgroud)

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

    "EBConfigurationTemplate" : {
        "Type" : "AWS::ElasticBeanstalk::ConfigurationTemplate",
        "Properties" : {
            "ApplicationName" : {
                "Ref" : "EBApplication"
            },
            "Description"     : "Configuration Template",
            "OptionSettings"  : [
                {
                    "Namespace" : "aws:elasticbeanstalk:application:environment",
                    "OptionName" : "REDIS_HOST",
                    "Value"      : {
                        "Ref" : "RedisHostInputParameter"
                    }
                },
            ]
Run Code Online (Sandbox Code Playgroud)

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