Я новичок в AWS и хотел бы узнать, как это можно сделать:
У меня есть приложение на Python с отдельными наборами конфигурации для разработки, постановки и производства.
В коде я в настоящее время идентифицирую среду либо с помощью переменной среды, либо с помощью файла, установленного в каталоге (который, очевидно, не является частью Ste SCM)
Как пометить экземпляр EC2 как промежуточный, чтобы мое приложение Python могло его обнаружить и применить правильный набор конфигурации?
Есть как минимум пара способов:
Ответ Тима самый лучший. Лучше всего использовать отдельные VPC. Используя лямбда-выражение, вы можете запланировать отключения на ночь и выходные, чтобы выключать все серверы DEV / UAT, когда они не используются.
Разделение сетей безопаснее от случайного изменения кода в prod.
Обычно это делается с помощью instance tags
Экземпляр EC2 может иметь любое количество тегов в формате ключ: значение. Они часто широко используются, чтобы помочь дальнейшим процессам идентифицировать роли / типы / среды экземпляра / и т. Д.
Некоторые примеры:
sometag:somevalue
env:prod
type:webserver
backup:yes
Поскольку вы упомянули Python, я предполагаю, что вы используете BOTO. Проверьте документацию по бото, вы даже можете фильтровать по определенным тегам: https://boto3.readthedocs.io/en/latest/reference/services/ec2.html#EC2.Client.describe_instances
На этой странице документа отмечено:
тег: ключ = * значение * - Сочетание ключа и значения тега, назначенного ресурсу. Укажите ключ тега в имени фильтра и значение тега в значении фильтра. Например, для тега Purpose = X укажите tag: Purpose для имени фильтра и X для значения фильтра.
Продолжая пример из документации:
Filters=[
{
'Name': 'tag:env',
'Values': [
'prod'
]
},
],
Помимо BOTO, многие другие утилиты взаимодействия с AWS часто имеют аналогичный фильтр или систему запросов, основанную на тегах экземпляров. Как Ansible и т. Д.
Скриншот экземпляра теги панель в консоли EC2: