我有一个 spring-boot 应用程序,我需要为其指定石墨服务器和端口(以发送指标)。为此,我必须安装和配置statsd
. 我使用ebextensions
文件来做到这一点。
commands:
01_nodejs_install:
command: sudo yum -y install nodejs npm --enablerepo=epel
ignoreErrors: true
02_mkdir_statsd:
command: mkdir /home/ec2-user/statsd
ignoreErrors: true
03_fetch_statsd:
command: git clone https://github.com/etsy/statsd.git /home/ec2-user/statsd
ignoreErrors: true
04_change_example_config:
command: "cat exampleConfig.js | sed 's/2003/<graphite-port>/g' | sed 's/graphite.example.com/<my-graphite-server>/g' > config.js"
cwd: /home/ec2-user/statsd
05_run_statsd:
command: setsid node stats.js config.js >/dev/null 2>&1 < /dev/null &
cwd: /home/ec2-user/statsd
此配置的问题是我只能在此处为所有环境指定 1 个石墨服务器。
所以我决定将命令 04 和 05 移动到container_commands
. 我正在考虑ENV_NAME
使用 beanstalk 控制台/UI定义一个名为的环境变量,并根据环境将其设置为dev
、qa
或。prod
然后我可以使用test
选项container_commands
04 和 05 仅针对基于此的特定环境运行命令ENV_NAME
。
所以我的问题是 - 我如何使用 AWS 控制台来定义环境变量?我尝试使用 Beanstalk 控制台来定义我的变量,如此处文档中所述, 但它不起作用。我还发现(请参阅 5 个赞成的答案)此方法仅设置 JVM 属性而不设置 ENV 变量。
我不能使用定义环境变量,ebextensions
因为那样我会遇到同样的问题 - 不能为不同的环境定义不同的环境变量:)
所以我需要帮助:
ENV_NAME
使用 beanstalk UI设置环境变量。
或者
- 建议一种使用
ENV_NAME
系统属性的方法,container_commands
以根据 的值来判断是否运行命令ENV_NAME
。
如果您知道为不同环境指定不同 Graphite 服务器的更简单/更好的方法,请随时加入。