Umgebungsspezifische ebextensions-Befehle
Ich habe eine Spring-Boot-Anwendung, für die ich Graphite-Server und -Port angeben muss (um Metriken zu senden). Damit das funktioniert, muss ich @ installieren und konfigurierstatsd
. Ich mache das mit demebextensions
Datei
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
Das Problem bei dieser Konfiguration ist, dass ich hier für alle Umgebungen nur 1 Graphitserver angeben kann.
So habe ich beschlossen, die Befehle 04 und 05 in @ zu verschiebcontainer_commands
. Ich denke an die Definition einer Umgebungsvariablen namensENV_NAME
Verwenden der Beanstalk-Konsole / Benutzeroberfläche und setze es aufdev
, qa
, oderprod
entsprechend der Umgebung. Dann kann ich @ verwendtest
Option voncontainer_commands
, um die Befehle 04 und 05 nur für bestimmte Umgebungen auszuführen, die auf diesem @ basiereENV_NAME
.
So ist mein Problem - wie kann ich AWS-Konsole verwenden, um Umgebungsvariable zu definieren? Ich habe versucht, meine Variable mithilfe der Benastalk-Konsole wie in der Dokumentation beschrieben zu definieren.Hie aber es hat nicht funktioniert. Ich auch found (siehe die Antwort mit 5 positiven Stimmen), dass diese Methode nur JVM-Eigenschaften und keine ENV-Variablen festlegt.
Ich kann keine Umgebungsvariable mit @ definierebextensions
weil ich dann das gleiche Problem habe - kann nicht verschiedene Umgebungsvariablen für verschiedene Umgebungen definieren:)
So brauche ich Hilfe mit entweder:
Stellen Sie das @ eENV_NAME
Umgebungsvariable mit der Beanstalk-Benutzeroberfläche.Ode
Schlagen Sie eine Möglichkeit vor, @ zu verwendeENV_NAME
Systemeigenschaft incontainer_commands
, um festzulegen, ob der Befehl basierend auf dem Wert von @ ausgeführt werden solENV_NAME
.Und falls Sie eine einfachere / bessere Möglichkeit kennen, verschiedene Graphite-Server für verschiedene Umgebungen anzugeben, können Sie sich gerne an uns wenden.