Рекламное объявление Amazon Elastic Beanstalk гласит:
Elastic Beanstalk позволяет вам «приоткрыть крышу» и сохранить полный контроль ... даже передавать переменные среды через консоль Elastic Beanstalk.
http://aws.amazon.com/elasticbeanstalk/
Как передать другие переменные среды, кроме той, которая указана в конфигурации Elastic Beanstalk?
Ответы:
Внимание всем, кто использует этот
.ebextensions/*.config
способ: в настоящее время вы можете добавлять, редактировать и удалять переменные среды в веб-интерфейсе Elastic Beanstalk.Переменные находятся в Configuration → Software Configuration:
Создание варов,
.ebextensions
как в ответе Onema, все еще работает.Это может быть даже предпочтительнее, например, если вы позже развернете в другой среде и боитесь забыть установить их вручную, или если вы согласны с фиксацией значений в системе управления версиями. Я использую и то, и другое.
источник
ENV["CUSTOM_ENV"]
вернется"something-something"
.Ограничением является только 5 значений, или вы можете иметь собственное имя переменной среды. Вы можете сделать это с помощью файлов конфигурации. Создайте каталог в корне вашего проекта под названием
.ebextensions /
Затем создайте файл с именем environment.config (этот файл можно называть как угодно, но он должен иметь расширение .config) и добавьте следующие значения
После развертывания приложения вы увидите это новое значение в разделе «Сведения о среде» -> «Изменить конфигурацию» -> «Контейнер».
для получения дополнительной информации проверьте документацию здесь: http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/customize-containers-ec2.html#customize-containers-format-options
Обновить
Чтобы предотвратить фиксацию значений вашего репозитория, таких как ключи API, секреты и т. Д., Вы можете поместить значение-заполнитель.
Позже вы можете перейти в панель администратора AWS (Сведения о среде -> Изменить конфигурацию -> Контейнер) и обновить там значения. По моему опыту, эти значения не меняются после последующих развертываний.
Обновление 2 Как заявил @Benjamin в своем комментарии, поскольку новый внешний вид был выпущен 18 июля 2013 г., можно определить любое количество переменных среды непосредственно с консоли:
Configuration > Software Configuration > Environment Properties
источник
command: "nrsysmond-config --set license_key={$NR_INSTALL_KEY}"
В Java8 Tomcat8 AMI 2016 ElasticBeanstalk не может установить переменные среды из веб-конфигурации. Вместо этого они действительно устанавливают свойства jvm -D.
- «Следующие свойства передаются в приложение как переменные среды. Подробнее».
Это утверждение неверно для Java Tomcat ami. Amazon не устанавливает их как переменные среды. Они устанавливаются как системные свойства, передаваемые в командной строке Tomcat как свойство -D для jvm. Метод получения переменных среды в Java отличается от метода получения свойства. System.getenv против System.getProperty
Я ssh'd в поле и убедился, что переменная среды никогда не задавалась. Однако в журналах tomcat я вижу, что свойство -D установлено.
Я изменил свой код, чтобы проверить оба местоположения в качестве временного решения.
источник
Amazon Linux 2017.03 v2.5.4 with Java8
также не устанавливает env.In general, however, environment properties are passed only to the application and can't be viewed by connecting an instance in your environment and running env.
Ваши переменные не установлены в сценарии входа, например.bashrc
. Однако вы правы, переменные Tomcat передаются как свойства. (См. Верхнюю часть связанной страницы.)AWS интерпретирует строки шаблона CloudFormation в переменных вашей среды. Вы можете использовать это для доступа к информации о вашей среде EB внутри вашего приложения:
В веб-интерфейсе AWS следующее будет оцениваться как имя вашей среды (обратите внимание на обратные галочки):
Или вы можете использовать
.ebextensions/*.config
шаблон CloudFormation и заключить его в обратные галочки (`):источник
В качестве альтернативы вы можете использовать интерфейс командной строки Elastic Beanstalk для установки переменных среды.
Чтобы установить переменную среды:
eb setenv FOO=bar
Чтобы просмотреть переменные среды:
eb printenv
источник
Сведения о среде -> Изменить конфигурацию -> Контейнер
источник
Кажется, это единственный способ установить ENV с динамическими значениями в beanstalk. Я придумал обходной путь, который работает для моей настройки с несколькими докерами:
1) Добавьте это в свой Dockerfile перед сборкой + загрузкой в репозиторий ECS:
2) В вашем файле Dockerrun.aws.json создайте том:
3) Установите том в свой контейнер
4) В вашем файле .ebextensions / options.config добавьте блок container_commands следующим образом:
5) eb deploy и ваш ENVS должны быть доступны в вашем докер-контейнере
Вы можете добавить больше ENV, добавив больше container_command, например:
Надеюсь это поможет!
источник
X: '
{"Ref": "MyCache"}'
значение не анализируется (значение только '{"Ref": "MyCache"}
') по умолчанию, когда контейнер пытается получить к нему доступ. Благодаря этому у вас могут быть такие динамические переменные.