亚马逊弹性魔豆导语说:
弹性魔豆让你“打开发动机罩”,并保留完全控制......甚至通过弹性魔豆控制台传递环境变量。
http://aws.amazon.com/elasticbeanstalk/
如何通过其他环境变量除了一个在弹性魔豆配置?
亚马逊弹性魔豆导语说:
弹性魔豆让你“打开发动机罩”,并保留完全控制......甚至通过弹性魔豆控制台传递环境变量。
http://aws.amazon.com/elasticbeanstalk/
如何通过其他环境变量除了一个在弹性魔豆配置?
作为一个抬头的人谁使用.ebextensions/*.config
道:现在你可以在弹性魔豆Web界面添加,编辑和删除环境变量。
该变量是在配置→软件配置:
创建于瓦尔.ebextensions
像Onema的回答仍然有效。
它甚至可以是可取的,例如,如果您稍后将部署到另一个环境,都不敢忘记进行手动设置,或者如果你确定犯有值到源代码管理。 我用这两者的混合。
只有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
在2016年Java8 Tomcat8 AMI,ElasticBeanstalk无法从web配置设置环境变量。 他们是真正的设置JVM -D属性,而不是。
- “下面的属性都会被传递到应用程序的环境变量了解更多。”
这种说法是不正确的Java的Tomcat的AMI。 亚马逊没有设置这些为环境变量。 它们被设置为命令行Tomcat作为-D属性JVM传递系统属性。 Java中的方法来获取环境变量是不是得到一个属性是相同的。 System.getenv VS System.getProperty
我SSH方式登录框和验证环境变量从未设置过。 然而,在tomcat日志中我可以看到-D属性设置。
我已经改变了我现在的代码来检查这两个地方作为一种解决方法。
AWS将在您的环境变量解释CloudFormation模板字符串。 你可以用它来访问你的应用程序中的EB环境的信息:
在AWS网络接口下面将要评估你的环境(请注意是反蜱)的名称:
`{ "Ref" : "AWSEBEnvironmentName" }`
或者,你可以使用一个.ebextensions/*.config
并在包装背面蜱CloudFormation模板(`):
{
"option_settings": [
{
"namespace": "aws:elasticbeanstalk:application:environment",
"option_name": "ENVIRONMENT_NAME",
"value": "`{ \"Ref\" : \"AWSEBEnvironmentName\" }`"
}
]
}
另外,您也可以使用弹性魔豆CLI来设置环境变量。
要设置的环境变量: eb setenv FOO=bar
要查看环境变量: eb printenv
环境细节 - >编辑配置 - >集装箱
这似乎是设置与豆茎动态值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;' \] \] }
希望这可以帮助!