Внедрение переменных среды в приложение Spring Boot с помощью AWS CodeBuild

#java #amazon-web-services #spring-boot #yaml #aws-codebuild

Вопрос:

Мы используем AWS в качестве нашего решения для загрузки приложений Spring CI/CD и хостинга. Вот фактические услуги и их назначение в нашей интеграции:

  1. CodePipeline прослушивает последние изменения в репозитории git и запускает процесс сборки
  2. CodeBuild создает фактический .jar файл
  3. CodePipeline сохраняет ранее созданный файл в S3 корзину и развертывает его в Elastic Beanstalk экземпляре

Все работает как по волшебству. Проблема заключается в введении переменных среды Spring Boot.

Мы используем файлы конфигурации YAML с профилями для предоставления переменных нашему приложению. Мы, очевидно, не хотим хранить наши .yml файлы в нашем репозитории git, но поскольку они довольно большие (более 70 переменных), возможность указывать каждую переменную buildspec кажется слишком большой.

Мой вопрос в том, каковы наши варианты? Есть какие-нибудь идеи по введению файла YAML во время сборки, не раскрывая его каким-либо образом публично? Или мы должны использовать каждую переменную отдельно.

Спасибо, Себастьян

Комментарии:

1. Если у вас так много настроек, возможно, пришло время для настройки Spring Cloud.

Ответ №1:

Мой вопрос в том, каковы наши варианты?

Популярным способом хранения переменных конфигурации является хранилище параметров SSM.

Поэтому вместо того, чтобы напрямую вводить все ваши переменные в CB, вы бы хранили их в хранилище параметров, а затем CB считывал бы параметры из хранилища. Для этого вам нужно будет добавить права доступа к роли CB для доступа к хранилищу.

Если у вас есть такая настройка, то вы просто передаете одну переменную env в CB — имя считываемого параметра. Так как у вас может быть несколько, например, для разработки, разработки или тестирования.