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.

Antworten auf die Frage(6)

Ihre Antwort auf die Frage