![按标签搜索 AWS AutoScalingGroup 资源](https://linux22.com/image/728743/%E6%8C%89%E6%A0%87%E7%AD%BE%E6%90%9C%E7%B4%A2%20AWS%20AutoScalingGroup%20%E8%B5%84%E6%BA%90.png)
我正在按标签搜索自动扩展组 - 我们所有的 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
'
希望有帮助:)