You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过单次AWS CLI调用查询pending、running状态EC2实例总数

解决方案

完全可以通过单次API请求完成统计,不需要发起两次调用。AWS EC2的instance-state-name过滤器原生支持多值匹配,传入多个状态值时会自动返回处于任意一个指定状态的实例,天然覆盖你需要的pending和running两个筛选范围。

适配原有使用习惯的合并命令

如果你习惯用wc -l做行统计,可以直接把两个状态值合并到同一个过滤器的Values列表中,命令如下:

aws ec2 describe-instances \
    --filters Name=instance-state-name,Values="running","pending" \
    --query 'Reservations[*].Instances[*].[InstanceId]' \
    --output text \
    | wc -l

这个命令和你之前两次执行命令再求和的结果完全一致,但只会向AWS发起一次服务请求,执行速度提升明显。

更高效的无管道统计写法

你还可以直接利用JMESPath(也就是AWS CLI --query 参数使用的查询语法)内置的length函数,直接在查询阶段返回实例总数,不需要管道调用wc:

aws ec2 describe-instances \
    --filters Name=instance-state-name,Values="running","pending" \
    --query 'length(Reservations[].Instances[])' \
    --output text

这个写法相比管道统计的版本有两个明显优势:

  • 不依赖wc命令,在Windows、macOS、Linux不同环境下都可以直接运行,不需要额外适配shell工具
  • 不需要把所有实例ID输出为文本流再做统计,CLI直接在本地对返回的结构化数据做计数,数据传输和处理开销更小

补充说明

  • AWS CLI默认开启自动分页,即使你账号下符合条件的实例数量超过单次接口返回的1000条上限,也会自动拉取全量结果后再统计,不会出现计数遗漏
  • 不要给过滤器传重复的Name=instance-state-name规则,多值匹配直接把所有目标状态写到同一个过滤器的Values里即可

内容的提问来源于stack exchange,提问作者FintleWoodle

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 08:15:32