2015-04-02 4 views
22

Я пытаюсь получить доступ к переменной окружения, которую я определил в конфигурации AWS Beanstalk. Мне нужно получить к нему доступ в файле конфигурации в .ebextensionsили в файле, который скопирован на место в файле конфигурации. Я попытался следующие:Доступ к переменным окружения в AWS Beanstalk ebextensions

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

И в моем nginx.conf файл, я попытался получить доступ $MYVAR, ${MYVAR} и {$MYVAR}, некоторые из которых был предложен here и here (последний непосредственно в конфигурационном файле).

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

Это также не работает. Во всех случаях имена переменных просто выводятся, например, $MYVAR, поэтому Beanstalk не распознает мои переменные. Я обнаружил, что ниже в AWS documentation о container_commands:

Они также имеют доступ к переменным окружения, такие как учетные данные безопасности AWS .

Это замечательно, но он не говорит как.

Как получить доступ к переменной окружения с помощью ebextensions, будь то в самом файле конфигурации или в отдельном файле, который скопирован на место?

Спасибо заранее!

ответ

35

Я потянулся к технической поддержке Amazon для ответа на этот вопрос, и вот их ответ:


К сожалению переменные не доступны в ebextensions напрямую. Самый лучший вариант, чтобы сделать это путем создания сценария, который затем запускается из команд контейнера, как это:

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 

Таким образом, если вы создаете скрипт и запустите его с помощью команды контейнера, то у вас будет доступ к переменным окружения в вашем сценарии оболочки следующим образом: $ENVIRONMENT_VARIABLE. Я проверил это, и он работает. В зависимости от вашего варианта использования вам может потребоваться немного изменить подход (по крайней мере, я сделал), но это рабочее решение. Я надеюсь, что это помогает кому-то!

Смежные вопросы