Как использовать один и тот же набор переменных среды между несколькими определениями служб ECS в CloudFormation - PullRequest
0 голосов
/ 19 сентября 2019

У меня есть приложение Django, которое работает в ECS, и все настраивается с помощью CloudFormation.Мне нужно использовать один и тот же набор переменных среды в определениях контейнеров для нескольких разных сервисов / задач.В настоящее время я повторяю переменные окружения для различных определений контейнеров (веб-сервер Django, несколько работников Celery, службы ударов и каналов и определения контейнеров в задачах для миграций и collectstatic).

Могу ли я определить переменные среды в одном файле, а затем ссылаться на эти переменные среды в каждом определении контейнера в качестве перекрестной ссылки?

Вот репозиторий, над которым я работаю, который содержит CloudFormation и код проекта: https://gitlab.com/verbose-equals-true/django-postgres-vue-gitlab-ecs

Сервисы для моего стека CloudFormation определены в этой папке: https://gitlab.com/verbose-equals-true/django-postgres-vue-gitlab-ecs/tree/develop/cloudformation/services

1 Ответ

2 голосов
/ 19 сентября 2019

Лучшим и более безопасным вариантом является Параметр AWS Systems Manager Магазин, в котором вы можете обмениваться общими переменными среды между службами и приложениями.

Хранилище параметров Являясь частью EC2 Systems Manager, предоставляет централизованное, зашифрованное хранилище для управления вашими данными конфигурации, будь то данные в незашифрованном виде (например, строки базы данных) или секреты (например, пароли).На параметры можно легко ссылаться с помощью функций диспетчера систем, таких как команда запуска, диспетчер состояний и автоматизация.Кроме того, поскольку хранилище параметров доступно через интерфейс командной строки AWS, API и SDK, вы можете легко ссылаться на параметры в таких сервисах AWS, как AWS Lambda и Amazon ECS.

ИтакВы можете ссылаться на общую переменную в своем определении задачи.

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

{
  "containerDefinitions": [{
    "secrets": [{
      "name": "environment_variable_name",
      "valueFrom": "arn:aws:secretsmanager:region:aws_account_id:secret:secret_name-AbCdEf"
    }]
  }]
}

enter image description here данные, определяющие конфиденциальность

...