Можете ли вы переназначить / скопировать / псевдонимы переменных среды на новые в эластичном beanstalk AWS?

Прямо сейчас мои переменные базы данных определены как RDS_*Однако я хотел бы переназначить их на соглашения моего приложения.

Это поможет избежать записи специфичных для AWS обнаружений внутри моего проекта, что, очевидно, желательно.

1 ответ

Решение

Есть несколько вариантов, каждый со своими недостатками:

1. Добавление переменных среды в конфигурацию EB

Находясь внутри вашей среды, перейдите к разделу "Конфигурация" и "Конфигурация программного обеспечения". Там вы увидите список переменных среды, а внизу вы можете перечислить свои собственные переменные. Недостатком этого является то, что теперь существует способ динамического сопоставления значений из переменных среды AWS. Если значение в AWS изменится, вам нужно будет обновить свое вручную. Скорее всего, это произойдет в случае, если вы обновляете / понижаете свою базу данных. Таким образом, вы захотите обновить хост для БД до новой конечной точки RDS. (ПРИМЕЧАНИЕ. Это основано на параметрах, доступных в средах PHP. Я видел варианты для других языков, но это может быть старая документация.)

2. Добавление сценария после развертывания

Это немного неприятно с beanstalk, но можно запускать сценарии после развертывания. Я не буду вдаваться в подробности, но в основном вам нужно будет добавить сценарии после развертывания, как описано в этой статье, в стандартную версию beanstalk ami. Затем вам нужно будет скопировать экземпляр как новый ami и переключить его в экземплярах beanstalk, чтобы использовать его по умолчанию. В сценарии после развертывания вы можете добавить сопоставление для переменных среды.

3. Добавление сопоставления в ваш код

Я понимаю, что вы не хотите этого делать, но я думаю, что это будет наименьшим количеством головной боли для вас. Я включил очень простой пример в PHP. Будьте осторожны при обмене $_ENV и getenv()/putenv()/$_SERVER, если вы используете PHP, так как они извлекаются из разных источников и могут быть изменены независимо.

<?php
    if(getenv('RDS_VAR')) {
        putenv('NEW_VAR', getenv('RDS_VAR'))
    }
?>

Последние мысли

Я использую комбинацию 1 и 3 при развертывании приложения в Beanstalk, поскольку оно дает наибольшую гибкость при работе с переменными динамической среды. Сначала я сопоставляю значения с конфигурацией моих приложений, как описано в #3, затем, если я хочу запланировать возможную замену конечной точки RDS, пароля или имени пользователя, я могу добавить переменные среды, как указано в #1, и добавить переопределения в мою среду AWS. отображение. Это позволяет мне синхронизироваться с переменными среды AWS, а также вручную переопределять их в конфигурации программного обеспечения, если мне нужно выгрузить БД для резервного копирования.

Другие вопросы по тегам