Wie verwende ich Umgebungsvariablen aus einer Elastic Beanstalk-Instanz-Shell?

Lesedauer: 2 Minute
0

Ich möchte Umgebungsvariablen aus einer AWS Elastic Beanstalk-Instance-Shell verwenden.

Kurzbeschreibung

In Elastic Beanstalk sind die Umgebungsvariablen nicht für das Betriebssystem sichtbar.

Um ein Hilfsprogramm mit Umgebungsvariablen aus dem Betriebssystem zu verwenden, wenn die Umgebungsvariablen als Elastic Beanstalk-Umgebungsvariablen festgelegt sind, müssen Sie eine .ebextension verwenden, die die Umgebungsvariablen in Betriebssystemvariablen exportiert.

Die folgende Lösung zeigt Ihnen, wie das geht:

1.Verwenden Sie das Dienstprogramm get-config, um Ihre Elastic Beanstalk-Umgebungsvariablen zu lesen.

2.Verwenden Sie das jq-Hilfsprogramm (von der jq-Website), um die get-config-Ausgabe von JSON in Shell-Variablen umzuwandeln.

3.Speichern Sie die Variablen in der Datei /etc/profile.d/sh.local. Diese Datei wird von Bash gelesen, um Variablen in das Betriebssystem zu exportieren.

Behebung

1.Erstellen Sie eine .ebextension-Datei in Ihrem Anwendungsquellpaket und fügen Sie Folgendes hinzu:

commands:
    setvars:
        command: /opt/elasticbeanstalk/bin/get-config environment | jq -r 'to_entries | .[] | "export \(.key)=\"\(.value)\""' > /etc/profile.d/sh.local
packages:
    yum:
        jq: []

**Hinweis:**Die Konfigurationsdatei in Schritt 1 heißt setvars.config.

2.Speichern Sie die .ebextension-Datei und stellen Sie sie dann in Ihrer Elastic Beanstalk-Umgebung bereit.

3.Um zu testen, ob die Variablen exportiert werden, stellen Sie über SSH eine Verbindung zu Ihrer Instance her und führen Sie dann den folgenden Befehl aus. Schließen Sie vor dem Testen alle vorhandenen Sitzungen und stellen Sie dann mithilfe von SSH erneut eine Verbindung her.

env | grep VARIABLE_NAME

**Wichtig:**Setzen Sie für Schritt 3 VARIABLE_NAME auf eine in Ihrer Umgebung definierte Variable.

Die Ausgabe zeigt, ob Ihre Umgebungsvariablen korrekt gesetzt sind. In der folgenden Beispielausgabe wird eine Variable namens RDS_PORT in der Elastic Beanstalk-Umgebung definiert.

$ env|grep RDS_PORT
RDS_PORT=3306

Hinweis: Da Sie die Befehle in der .ebextension verwenden, können Sie die Datei sh.local nur mit einer neuen Bereitstellung aktualisieren. Wenn Sie eine Variable in der Umgebung hinzufügen oder ändern, müssen Sie eine neue Bereitstellung erstellen, bevor die Variable in das Betriebssystem exportiert wird.


AWS OFFICIAL
AWS OFFICIALAktualisiert vor 2 Jahren