2015-04-02 12 views
22

Sto tentando di accedere a una variabile di ambiente che ho definito nella configurazione Beanstalk di AWS. Ho bisogno di accedervi all'interno di un file di configurazione in .ebextensionso in un file che viene copiato in posizione in un file di configurazione. Ho provato quanto segue:Accesso alle variabili di ambiente in AWext Beanstalk ebextensions

container_commands: 
    update_nginx_config: 
    command: "cp .ebextensions/files/nginx/nginx.conf /etc/nginx/nginx.conf" 

E nel mio file nginx.conf, ho cercato di accesso $MYVAR, ${MYVAR} e {$MYVAR}, alcuni dei quali era stato suggerito here e here (quest'ultimo è direttamente all'interno di un file di configurazione).

files: 
    "/etc/nginx/nginx.conf" : 
    mode: "000644" 
    owner: root 
    group: root 
    content: | 
     $MYVAR ${MYVAR} {$MYVAR} 

Anche questo non funziona. In tutti i casi, i nomi delle variabili sono solo output come $MYVAR, quindi Beanstalk non riconosce le mie variabili. Ho trovato il seguito nella AWS documentation su container_commands:

Essi hanno anche accesso a variabili d'ambiente come ad esempio le credenziali di protezione AWS .

Questo è grande, ma non dice come .

Come posso accedere a una variabile di ambiente con ebextensions, sia all'interno di un file di configurazione stesso o in un file separato che viene copiato sul posto?

Grazie in anticipo!

risposta

35

ho raggiunto fuori al supporto tecnico Amazon per una risposta a questa domanda, e qui è la loro risposta:


Purtroppo le variabili non sono disponibili in ebextensions direttamente. L'opzione migliore per farlo è attraverso la creazione di uno script che poi viene eseguito da comandi contenitore come questo:

files: 
    "/home/ec2-user/setup.sh": 
    mode: "000755" 
    owner: root 
    group: root 
    content: | 
     #!/bin/bash 

     # Commands that will be run on containter_commmands 
     # Here the container variables will be visible as environment variables. 

container_commands: 
    set_up: 
    command: /home/ec2-user/setup.sh 

Quindi, se si crea uno script di shell e richiamare tramite un comando di contenitore, quindi avrai accesso alle variabili di ambiente all'interno dello script della shell come segue: $ENVIRONMENT_VARIABLE. Ho provato questo e funziona. A seconda del tuo caso d'uso, potresti dover cambiare un po 'il tuo approccio (almeno l'ho fatto), ma è una soluzione funzionante. Spero che questo aiuti qualcuno!