Лучший способ обработки нескольких переменных среды в AWS Codebuild

#amazon-web-services #aws-lambda #aws-codebuild

#amazon-веб-сервисы #aws-lambda #aws-codebuild

Вопрос:

У меня есть проект AWS Codebuild, подключенный к моей учетной записи Github. В моем github у меня есть отдельные ветки для каждой среды.

В настоящее время у меня всего 4 среды (и, соответственно, 4 ветки github): dev, qa, customer1-poc, customer2-prod.

Теперь я использую множество переменных среды в своем проекте, и изначально я настраивал эти переменные среды в проекте Codebuild в разделе Environment> Переменные среды. Таким образом, в идеале для каждого env существует 4 переменных env, которые различаются по имени env.

Например, если существует переменная среды с именем apiKey, она сохраняется в codebuild 4 раза по имени

apiKey_dev

apiKey_qa

apiKey_customer1poc

apiKey_customer2prod

Вы поняли идею. То же самое относится и к другим переменным среды env, которые должны отличаться во всех средах.

Эти переменные env считываются из файла buildspec и передаются в бессерверный файл.yml.

Теперь проблема в том, что я продолжаю создавать новые среды (например, больше poc, prod envs) Мне нужно продолжать копировать набор переменных env для каждого env, и это становится утомительным.

Есть ли какой-нибудь способ сохранить эти переменные среды вне проекта Codebuild, которые затем могут быть переданы лямбда-функции после успешной сборки?

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

1. Можете ли вы сохранить все это в SSM PAramter store? У вас может быть один параметр с несколькими значениями в формате JSON.

Ответ №1:

CodeBuild имеет встроенную интеграцию с хранилищем параметров:

В хранилище параметров вы можете сохранить свою переменную в виде json с именем, подобным /config/prod «:

введите описание изображения здесь

… затем извлеките его в CodeBuild и проанализируйте с помощью ‘jq’ 2 . Таким образом, все переменные, зависящие от среды, находятся в одном месте. Если вы пойдете этим путем, обязательно зашифруйте переменную Param Store ключом KMS, если она содержит секреты. Также проверьте AWS Secrets Manager.