Pesquisando recursos do AWS AutoScalingGroup por tags

3

Estou pesquisando por grupos de escalonamento automático por tags - todos os nossos recursos da AWS têm várias tags aplicadas a eles. No entanto, só quero encontrar grupos de escalonamento automático, e não outros tipos de recursos.

O que deve ser possível usando a API de marcação; da linha de comando:

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

No entanto, isso resulta no erro: Unsupported service=autoscaling in ResourceTypeFilter . Ele funciona bem para outros filtros de tipo de recurso, como ec2 .
(Observe que fornecer os resultados mais específicos de --resource-type-filters=autoscaling:autoScalingGroup no mesmo erro)

Também notei que, se eu realmente pesquisar tags sem restringir o tipo de recurso ao escalonamento automático, não receberei nenhum ARNs do grupo de autoescalamento na resposta.

Existe alguma (outra) maneira de pesquisar grupos de dimensionamento automático por tags nas APIs da AWS?


O motivo é que quero criar métricas personalizadas para uma variedade de serviços e preciso encontrar os grupos de dimensionamento automático corretos por um conjunto específico de tags, para poder recuperar e colocar as métricas do CloudWatch com a dimensão da métrica AutoScalingGroupName para cada. / p>     

por Erwin Bolwidt 22.10.2018 / 08:12

1 resposta

3

Infelizmente, você não pode usar aws recourcegroupstaggingapi simplesmente porque essa API não suporta grupos de AutoScaling no momento. É também por isso que as informações do AutoScaling não são retornadas em get-resources resultados como você notou. Consulte a Referência de APIs de tags de grupos de recursos para obter a API real e os recursos compatíveis. Observe que o AutoScaling não é parte da API do EC2. Por que essa limitação? Eu não sei, você terá que perguntar à Amazon;)

No entanto, com um pouco de jq hackery, você pode usar aws autoscaling describe-auto-scaling-groups como solução alternativa:

~ $ 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
'

Espero que ajude:)

    
por 22.10.2018 / 10:19