Назад | Перейти на главную страницу

Поиск ресурсов AWS AutoScalingGroup по тегам

Я ищу группы автомасштабирования по тегам - ко всем нашим ресурсам AWS применен ряд тегов. Однако я хочу найти только группы автоматического масштабирования, а не другие типы ресурсов.

Это должно быть возможно с использованием API тегов; из командной строки:

aws resourcegroupstaggingapi get-resources --resource-type-filters=autoscaling

Однако это приводит к ошибке: Unsupported service=autoscaling in ResourceTypeFilter. Он отлично работает с фильтрами других типов ресурсов, такими как ec2.
(Обратите внимание, что если указать более конкретную --resource-type-filters=autoscaling:autoScalingGroup приводит к той же ошибке)

Я также заметил, что если я действительно ищу теги, не ограничивая тип ресурса автоматическим масштабированием, я не получаю никаких ARN групп автомасштабирования в ответе.

Есть ли какой-либо (другой) способ поиска групп с автоматическим масштабированием по тегам в API AWS?


Причина в том, что я хочу создать пользовательские метрики для ряда сервисов, и мне нужно найти правильные группы автоматического масштабирования по определенному набору тегов, чтобы иметь возможность извлекать и помещать метрики CloudWatch с измерением метрики AutoScalingGroupName для каждой из них.

К сожалению, вы не можете использовать aws recourcegroupstaggingapi просто потому, что этот API не поддерживает группы AutoScaling в данный момент. Вот почему информация об AutoScaling не возвращается в get-resources результаты как вы заметили. Видеть Пометка групп ресурсов »Справочник по API для фактического API и поддерживаемых ресурсов. Обратите внимание, что AutoScaling не является часть EC2 API. Почему это ограничение? Не знаю, спросите у Amazon;)

Однако с небольшим количеством jq хакерство, которое вы можете использовать aws autoscaling describe-auto-scaling-groups как обходной путь:

~ $ aws autoscaling describe-auto-scaling-groups | jq -r '
        ## Unfold .Tags[] to .TagKey = Value
        .[keys[0]] | map(
            if has("Tags") then 
                . += (.Tags | map( { "Tag\(.Key)": (.Value) } ) | add | del(.Tags))
            else
                .
            end
        )[] | 
        ## TagKey == Value you want to select on (e.g. Name=="wiki-3" in my case)
        select(.TagName == "wiki-3") |
        ## The attribute you want to output (e.g. .AutoScalingGroupName or .AutoScalingGroupARN)
        .AutoScalingGroupName
'

Надеюсь, это поможет :)