你如何通过自定义的环境变量在Amazon Elastic魔豆(AWS EBS)?你如何通过自定义的环

2019-06-14 05:22发布

亚马逊弹性魔豆导语说:

弹性魔豆让你“打开发动机罩”,并保留完全控制......甚至通过弹性魔豆控制台传递环境变量。

http://aws.amazon.com/elasticbeanstalk/

如何通过其他环境变量除了一个在弹性魔豆配置?

Answer 1:

作为一个抬头的人谁使用.ebextensions/*.config道:现在你可以在弹性魔豆Web界面添加,编辑和删除环境变量。

该变量是在配置→软件配置:

创建于瓦尔.ebextensions像Onema的回答仍然有效。

它甚至可以是可取的,例如,如果您稍后将部署到另一个环境,都不敢忘记进行手动设置,或者如果你确定犯有值到源代码管理。 我用这两者的混合。



Answer 2:

只有5个值的限制,或者你可能希望有一个自定义的环境变量名称。 您可以通过使用配置文件做到这一点。 在项目的根称为创建一个目录

.ebextensions /

然后创建一个名为environment.config(该文件可以被称为什么,但它必须具备的.config扩展名),并添加以下值

option_settings:
  - option_name: CUSTOM_ENV
    value: staging

在部署应用程序,你会看到在环境细节这个新值 - >编辑配置 - >集装箱

:了解更多信息点击这里查看文档http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/customize-containers-ec2.html#customize-containers-format-options

更新

为了避免犯像API密钥,秘密等你的资料库值,你可以把一个占位符值。

option_settings:
  - option_name: SOME_API_KEY
    value: placeholder-value-change-me

以后你可以去AWS管理面板(环境细节 - >编辑配置 - >集装箱)和更新的值存在。 在我的经验,这些值不后续部署后更改。

更新2正如@Benjamin在他的评论中指出,由于新的外观和感觉是推出了2013年7月18日就可以直接从控制台定义任意数量的环境变量:

Configuration > Software Configuration > Environment Properties



Answer 3:

在2016年Java8 Tomcat8 AMI,ElasticBeanstalk无法从web配置设置环境变量。 他们是真正的设置JVM -D属性,而不是。

- “下面的属性都会被传递到应用程序的环境变量了解更多。”

这种说法是不正确的Java的Tomcat的AMI。 亚马逊没有设置这些为环境变量。 它们被设置为命令行Tomcat作为-D属性JVM传递系统属性。 Java中的方法来获取环境变量是不是得到一个属性是相同的。 System.getenv VS System.getProperty

我SSH方式登录框和验证环境变量从未设置过。 然而,在tomcat日志中我可以看到-D属性设置。

我已经改变了我现在的代码来检查这两个地方作为一种解决方法。



Answer 4:

AWS将在您的环境变量解释CloudFormation模板字符串。 你可以用它来访问你的应用程序中的EB环境的信息:

在AWS网络接口下面将要评估你的环境(请注意是反蜱)的名称:

`{ "Ref" : "AWSEBEnvironmentName" }`

或者,你可以使用一个.ebextensions/*.config并在包装背面蜱CloudFormation模板(`):

{
  "option_settings": [
    {
      "namespace": "aws:elasticbeanstalk:application:environment",
      "option_name": "ENVIRONMENT_NAME",
      "value": "`{ \"Ref\" : \"AWSEBEnvironmentName\" }`"
    }
  ]
}


Answer 5:

另外,您也可以使用弹性魔豆CLI来设置环境变量。

要设置的环境变量: eb setenv FOO=bar

要查看环境变量: eb printenv



Answer 6:

环境细节 - >编辑配置 - >集装箱



Answer 7:

这似乎是设置与豆茎动态值ENVS的唯一途径。 我想出了给我多泊坞窗安装工作的解决方法:

1)建筑+上传到您的ECS库之前给你的Dockerfile地址:

CMD eval `cat /tmp/envs/env_file$`; <base image CMD goes here>;

2)在您的Dockerrun.aws.json文件创建卷:

{
    "name": "env-file",
    "host": {
        "sourcePath": "/var/app/current/envs"
    }
}

3)安装量,您的容器

{
  "sourceVolume": "env-file",
  "containerPath": "/tmp/envs",
  "readOnly": true
}

4)在您的.ebextensions / options.config文件中添加container_commands阻止像这样:

container_commands:
  01_create_mount:
    command: "mkdir -p envs/"
  02_create_env_file:
    command: { "Fn::Join" : [ "", [ 'echo "', "export ENVIRONMENT_NAME=" , { "Ref", "RESOURCE" }, ';" > envs/env_file;' ] ] }

5)EB部署和您的ENVS应该在你的搬运工容器可用

您可以通过添加更多的container_commands像添加更多ENVS:

  02_create_env_file_2:
    command: { "Fn::Join" : [ "", [ 'echo "', "export ENVIRONMENT_NAME_2=" , { "Ref", "RESOURCE2" }, ';" >> envs/env_file;' \] \] }

希望这可以帮助!



文章来源: How do you pass custom environment variable on Amazon Elastic Beanstalk (AWS EBS)?