按标签搜索 AWS AutoScalingGroup 资源

按标签搜索 AWS AutoScalingGroup 资源

我正在按标签搜索自动扩展组 - 我们所有的 AWS 资源都应用了许多标签。但我只想查找自动扩展组,而不是其他类型的资源。

应该可以使用标记 API;从命令行:

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

但是,这会导致错误:Unsupported service=autoscaling in ResourceTypeFilter。它适用于其他资源类型过滤器,例如ec2
(请注意,提供更具体的--resource-type-filters=autoscaling:autoScalingGroup结果会导致相同的错误)

我还注意到,如果我实际搜索标签而不将资源类型限制为自动扩展,那么我不会在响应中得到任何自动扩展组 ARN。

有没有其他方法可以通过 AWS API 中的标签搜索自动扩展组?


原因是我想为一系列服务创建自定义指标,并且需要通过一组特定的标签找到正确的自动扩展组,以便能够检索并放置 CloudWatch 指标,每个指标都带有 AutoScalingGroupName 指标维度。

答案1

不幸的是你不能使用aws recourcegroupstaggingapi仅仅因为这个API不支持 AutoScaling 组目前。这也是get-resources您注意到的结果中未返回 AutoScaling 信息的原因。请参阅资源组标记 » API 参考实际 API 和支持的资源。请注意,AutoScaling不是EC2 API 的一部分。为什么会有这个限制?我不知道,你得去问亚马逊 ;)

然而,通过一些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
'

希望有帮助:)

相关内容