Come si utilizzano le variabili di ambiente di una shell (interprete di comandi) di istanza Elastic Beanstalk?

2 minuti di lettura
0

Desidero utilizzare le variabili di ambiente di una shell (interprete di comandi) di istanza AWS Elastic Beanstalk.

Breve descrizione

In Elastic Beanstalk, le variabili di ambiente non sono esposte al sistema operativo.

Per utilizzare un'utility con variabili di ambiente del sistema operativo quando sono impostate come variabili di ambiente Elastic Beanstalk, è necessario utilizzare un'estensione .ebextension che esporti le variabili di ambiente in variabili del sistema operativo.

La risoluzione seguente mostra come:

1.    Usa l'utility get-config per leggere le variabili di ambiente Elastic Beanstalk.

2.    Usa l'utility jq (dal sito web jq) per trasformare l'output get-config da JSON in variabili di shell (interprete di comandi).

3.    Salva le variabili nel file /etc/profile.d/sh.local. Questo file viene letto da Bash per esportare le variabili nel sistema operativo.

Risoluzione

1.    Crea un file .ebextension nel pacchetto sorgente dell'applicazione e includi quanto segue:

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

Nota: il file di configurazione nel passaggio 1 si chiama setvars.config.

2.    Salva il file .ebextension, quindi distribuiscilo nel tuo ambiente Elastic Beanstalk.

3.    Per verificare se le variabili vengono esportate, connettiti alla tua istanza tramite SSH, quindi esegui il comando seguente. Prima del test, chiudi tutte le sessioni esistenti e riconnettiti tramite SSH.

env | grep VARIABLE_NAME

Importante: per il passaggio 3, imposta VARIABLE_NAME su una variabile definita nel tuo ambiente.

L'output mostra se le variabili di ambiente sono impostate correttamente. Nel seguente output di esempio, una variabile denominata RDS_PORT è definita nell'ambiente Elastic Beanstalk.

$ env|grep RDS_PORT
RDS_PORT=3306

Nota: poiché stai usando i comandi su .ebextension, puoi aggiornare il file sh.local solo con una nuova distribuzione. Se si aggiunge o si modifica una variabile nell'ambiente, è necessario creare una nuova implementazione prima che la variabile venga esportata nel sistema operativo.


AWS UFFICIALE
AWS UFFICIALEAggiornata 2 anni fa