2015-04-02 19 views
22

Próbuję uzyskać dostęp do zmiennej środowiskowej, którą zdefiniowałem w konfiguracji AWS Beanstalk. Muszę uzyskać do niego dostęp w pliku konfiguracyjnym pod numerem .ebextensionslub w pliku skopiowanym na miejscu w pliku konfiguracyjnym. Próbowałem następujące:Uzyskiwanie dostępu do zmiennych środowiskowych w AWS Beanstalk ebextensions

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

A w moim pliku nginx.conf, próbowałem dostępu $MYVAR, ${MYVAR} i {$MYVAR}, z których część została sugerowanej here i here (te ostatnie są bezpośrednio w pliku konfiguracyjnym).

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

To również nie działa. We wszystkich przypadkach nazwy zmiennych są po prostu wyjściowe, takie jak $MYVAR, więc funkcja Beanstalk nie rozpoznaje moich zmiennych. Znalazłem poniżej w AWS documentation o container_commands:

Mają też dostęp do zmiennych środowiskowych, takich jak poświadczenia bezpieczeństwa AWS .

To jest świetne, ale nie mówi jak.

Jak uzyskać dostęp do zmiennej środowiskowej z rozszerzeniami e-mail, czy to w pliku konfiguracyjnym, czy w osobnym pliku, który jest kopiowany w miejscu?

Z góry dziękuję!

Odpowiedz

35

Wyciągnąłem do wsparcia technicznego Amazon na odpowiedź na to pytanie, a tu jest ich odpowiedź:


Niestety zmienne nie są dostępne w ebextensions bezpośrednio. Najlepszym rozwiązaniem, aby to zrobić jest stworzenie skryptu, który następnie uruchamiana jest z poleceniami kontenerowych tak:

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 

Jeśli więc stworzyć skrypt i wywołać go za pomocą polecenia pojemnika, wtedy będziesz mieć dostęp do zmiennych środowiskowych w twoim skrypcie powłoki w następujący sposób: $ENVIRONMENT_VARIABLE. Testowałem to i to działa. W zależności od przypadku użycia, być może trzeba zmienić nieco podejście (przynajmniej tak się stało), ale jest to działające rozwiązanie. Mam nadzieję, że to pomoże komuś!

Powiązane problemy