如何使用AWS CLI筛选MinSize大于0的Auto Scaling组?
解决AWS CLI筛选MinSize大于0的Auto Scaling组问题
你原来的命令里的JMESPath语法有点问题,MinSize=>0不是正确的筛选写法。这里给你两种可行的方法,分别适合不同的场景:
方法一:使用--query进行客户端筛选(灵活易读)
这是最直接的方式,用JMESPath的条件过滤语法,先筛选出MinSize > 0的Auto Scaling组,再提取你需要的字段:
aws autoscaling describe-auto-scaling-groups --query 'AutoScalingGroups[?MinSize > 0].[AutoScalingGroupName, MinSize, MaxSize, DesiredCapacity, LaunchConfigurationName]'
关键点说明:
[?MinSize > 0]:这是JMESPath的过滤表达式,意思是只保留数组中MinSize属性大于0的元素- 后面的
.[AutoScalingGroupName, ...]:指定你要输出的字段列表,按顺序排列
如果想要更直观的表格输出,加上--output table参数即可:
aws autoscaling describe-auto-scaling-groups --query 'AutoScalingGroups[?MinSize > 0].[AutoScalingGroupName, MinSize, MaxSize, DesiredCapacity, LaunchConfigurationName]' --output table
方法二:使用--filter进行服务端筛选(效率更高)
如果你的AWS账号下有大量Auto Scaling组,推荐用服务端筛选,减少返回的数据量:
aws autoscaling describe-auto-scaling-groups --filters "Name=min-size,Values=1,2,3,4,5"
不过这个方法的局限性是Values需要指定具体的数值,如果要覆盖所有大于0的情况,需要列出所有可能的正整数,不如--query灵活。如果需要结合字段选择,可以把--filter和--query一起用:
aws autoscaling describe-auto-scaling-groups --filters "Name=min-size,Values=1,2,3,4,5" --query 'AutoScalingGroups[].[AutoScalingGroupName, MinSize, MaxSize, DesiredCapacity, LaunchConfigurationName]'
为什么你的原命令不生效?
你写的MinSize=>0是错误的JMESPath语法,JMESPath中过滤条件必须放在数组的[?...]表达式里,而不是直接写在字段列表中。正确的逻辑是先过滤数组元素,再选择字段。
内容的提问来源于stack exchange,提问作者a-dawg
相关产品推荐
相关产品推荐

