Как интегрировать ваш файл учетных данных aws в кодовую строку, поскольку я не могу сохранить его в репозитории Github

Проект построен с использованием AWS lambda и некоторых других сервисов AWS. Чтобы создать сборку и просто обслуживать статические файлы сборки через сервер node Express, требуется файл credentials.js, который содержит все мои учетные данные AWS для проекта. Теперь я создаю кодовый конвейер aws, который извлекает код из GitHub и развертывает его на ec2 с помощью эластичного beanstalk. Проблема в том, что я не размещаю свой файл учетных данных на Github, так как это небезопасно. А без файла учетных данных код не может быть развернут. Пожалуйста, предложите мне решение этой проблемы.

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


person Hassan Irshad    schedule 24.07.2019    source источник
comment
В какой момент он терпит неудачу? В файле учетных данных только учетные данные AWS или другие секреты? Вам не понадобится файл учетных данных для его простого развертывания, так как роль службы EB будет справляться с этим. Для всего остального лучше всего назначить роль функции или экземпляру и предоставить этой роли доступ к необходимым ресурсам. Для других секретов настройте некоторые переменные среды Elastic Beanstalk и укажите переменную env в своем коде. См. Эту ссылку: docs.aws.amazon.com/ elasticbeanstalk / latest / dg /   -  person hephalump    schedule 24.07.2019


Ответы (2)


Вы можете безопасно сохранить файл конфигурации учетных данных в частном сегменте S3 и добавить commands в свой buildspec.yml файл (используемый на этапе CodeBuild вашего конвейера), чтобы получить этот файл и поместить его в нужное место для вашего проекта.

Вам нужно будет предоставить роли службы CodeBuild правильные разрешения для доступа к частной корзине S3.

Ниже приводится пример того, что я имею в виду. Обратите внимание, что я могу хранить файл конфигурации для нескольких сред в S3, поэтому я использую переменную среды, чтобы указать точное имя файла, например my-creds.dev.json или my-creds.prod.json. Затем имя файла преобразуется в просто my-creds.json, так что вы можете полагаться на то же имя в своей программе.

CodeBuild будет искать buildspec.yml, который определяет вашу сборку в корне вашего проекта, и выполнять эти команды

version: 0.2  

phases:
  pre_build:
    commands:
      # Get the creds config file for the correct environment
      # and put it in the my projects config directory (or wherever you need it)
      - aws s3 cp s3://my-s3-bucket/my-creds.${ENVIRONMENT}.json ./config/my-creds.json
      - npm install
  build:
    commands:
      - npm run build:${ENVIRONMENT}

artifacts:
  files:
    - dist/**/*

Критическая линия - aws s3 cp s3://my-s3-bucket/my-creds.${ENVIRONMENT}.json ./config/my-creds.json.

  • Команды запускаются в корне каталога вашего проекта, где находится файл buildspec.yml.
  • Вышеупомянутая команда находится в фазе pre_build, поэтому она будет выполняться до выполнения команд (сборка npm) в фазе build.
  • Команда копирует ваш файл учетных данных из корзины s3 в путь, определенный последней частью команды (в данном случае ./config/my-creds.json). Опять же, помните, что это относительно корня каталога вашего проекта, поэтому, если ваш проект содержит папку src в корневом каталоге, тогда ваш путь может быть ./src/my-creds.json или ./src/creds/my-creds.json.
person lemming    schedule 25.07.2019
comment
У меня возникла идея, которую вы пытаетесь донести, у меня только одно замешательство: как он собирается разместить файл в правильном месте перед сборкой. Я хочу спросить, где мы определяем путь для размещения файла? - person Hassan Irshad; 28.07.2019
comment
@HassanIrshad Я обновил ответ, но вкратце путь и имя места назначения для вашего файла конфигурации определяется последним аргументом команды aws s3 cp. В примере give он переходит в каталог ./confg (относительно корня вашего проекта) и будет переименован с my-creds.[some-environment].json на my-creds.json. - person lemming; 28.07.2019

Не следует добавлять файл учетных данных, поскольку это не рекомендуется. Вы можете выполнить развертывание, назначив роль конвейера кода с разрешением на доступ к необходимым ресурсам.

person Haider Ali    schedule 26.07.2019