Лучшие DevOps практики и кейсы

Как пользоваться AWS Tags и при чем тут Lambda функции


Оптимизация затрат - одна из самых важных нетехнических задач при работе с AWS.В предыдущих статьях мы рассказывали как Вы можете сэкономить на AWS. В этой статье мы более детально разберем AWS Tags и очистку с помощью Lambda функций.

Зачем использовать AWS Tags?

AWS Tags - ключ-значение закрепляемое за ресурсом. Используя тэги в AWS Cost Explorer мы сможем увидеть траты за разные промежутки времени по проектам. Также, AWS Tags используются для ряда других задач:
  • Какой сотрудник является контактным лицом для этого ресурса AWS?
  • Сколько наших серверов было обновлено последней версией операционной системы?
  • Сколько наших сервисов включили оповещения?
  • Какие AWS-ресурсы не нужны в часы низкой нагрузки?
  • Кто должен иметь доступ к этому ресурсу?

Перед добавлением тэгов стоит выработать план по их использованию и добавлению.

Подходы к использованию AWS Tags

Подбор и планирование идеальной стратегии для использования тэгов займет огромное количество времени - окажется почти бесполезной тратой времени. Поэтому определим наиболее оптимальные подходы.

1. Разберитесь с типами тэгов

AWS предоставляет 4 типа тэгов: technical, business, security, и automation. Разберемся с каждым типом детальнее:
  • Technical - помогает идентифицировать ресурс и упросить работу с ним. Например, название приложения или сервиса, его среда (Ubuntu 20.04 LTS) и версия сборки (1.3-dev)
  • Business - для анализа стоимости каждого ресурса командами и отделами. Например, узнать какую часть денег вы потратили на AWS для вашего нового продукта.
  • Security - обеспечивают соответствие и соблюдение стандартам безопасности. Например, ограничение доступов для выполнения требований HIPAA или SOC соглашений.
  • Automation - для автоматизации удаления или отключения неиспользуемых ресурсов в вашем аккаунте. Например, вы можете запустить скрипт удаляющий неиспользуемые сервера с таким тегом.

2. Выбор обязательных тегов и организационные моменты

Определитесь с необходимыми AWS тегами, учитывая ваши цели и количество ресурсов в аккаунте. Также, необходимо определиться с формат имени тега и назначить ответственных за создание. В случае небольшого количества ресурсов достаточно будет 1 человека, если у вас есть несколько команд - делегируйте эту задачу им, чтобы они определили оптимальное количество людей и выполнили задачу.

3. Определитесь с форматом имени

Согласование масштабируемого формата именования AWS-тегов для ваших ключей и значений может быть сложным, например использовать snake_case или camelCase, какие символы для пробелов и т.п. Обязательно, прочитайте ограничения по именованию AWS тегов, прежде чем выбирать единый формат.

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

Ключ тега: cloudy:eng:os-version (company:team:tag)
значение: 1.0
Таким образом, сначала мы указываем название компании или проекта - cloudy , команду работающую над ним - eng (engineering), и конкретное свойство как название тега: os-version.

4. Ограничьте количество AWS тэгов

Существуют технические и практические ограничения на количество используемых тэгов. Во-первых, AWS имеет ограничение в 50 тегов для каждого ресурса. Более того, разработчикам будет сложно держать под контролем и запоминать много тэгов.

К счастью, AWS сам создает некоторые тэги. Например, вам не придется хранить создателя EC2 инстанса, потому что Amazon по умолчанию добавляет тэг createdBy. Решите, какие теги вам нужны, и попытайтесь ограничить создание новых тегов.

5. Автоматизируйте управление AWS тегами

По мере роста количества AWS-ресурсов в вашем аккаунте будет становиться все сложнее обеспечивать выполнение конвенций и обновлять тэги. Поэтому вы можете использовать Terraform, CloudFormation, Cloud Custodian для управления AWS тэгами на ваших ресурсах.

Amazon также предлагает tag policies, tagging by resource group, и resource tagging API , чтобы помочь вам управлять и назначать теги массово. Автоматизация как можно большей части процесса управления тегами в долгосрочной перспективе приведет к более качественным и удобным в обслуживании тегам.

6. Пересмотр и поддержка AWS тэгов

Для поддержания тегов в актуальном состоянии - необходим их пересмотр. В зависимости от количества ресурсов, которые вы разворачиваете, стоит установить напоминание о необходимости ежеквартального аудита ваших тегов, или же выбору ответственных по обзору и обновлению тегов каждый месяц. 

Amazon Web Services предоставляет исчерпывающий документ о рекомендованных методах работы с тэгами. Обязательно просмотрите его, если вы хотите лучше разобраться.

7. Очистка неиспользуемых ресурсов с AWS Lambda

Помимо автоматического добавления тэгов Вы можете использовать Lambda функции для удаления длительное время неиспользуемых ресурсов без тэгов, очень часто это делают для EC2 инстансов и EBS томов

Также если вы используете Lambda функции для production, то стоит поработать и над их оптимизацией.

Удаление Lambda функций

Из множества технологий от Netflix можно выделить Janitor Monkey для очистки неиспользуемых ресурсов - AutoScaling Groups, EBS томов и snapshot-ов.

Чтобы получить неиспользуемые lambda функции воспользуйтесь туториалом от AWS на Python, а для удаления функций используйте aws cli. Если вам больше по душе Node.JS, то можете попробовать этот код.

Оптимизация затрат и автоматизация управления ресурсов для этого - естественные шаги для уменьшения счетов AWS и более детального понимания на что уходят деньги. С этим лучше всего помогают теги и Lambda функции очищающие неиспользуемые ресурсы.

Пишите нам, если у вас все еще остались вопросы или вам нужна помощь в уменьшении стоимости вашей инфраструктуры.

Статьи