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

如何在AWS CLI表格输出中执行类SQL查询并按实例类型分组InstanceId

在AWS CLI中实现类SQL的分组查询(按实例类型分组InstanceId)

直接处理AWS CLI的表格输出做分组确实不太方便——表格是为了可读性格式化的,数据结构并不适合做聚合操作。我推荐你先把输出转成JSON格式,再用JMESPath(AWS CLI默认支持的查询语言)或者jq工具来实现类SQL的分组逻辑,下面是具体的实现方案:

方案1:用AWS CLI自带的JMESPath直接分组

JMESPath内置了group_by函数,可以直接按指定字段分组,不需要额外安装工具。你可以修改原命令,加入分组逻辑:

命令示例

aws ec2 describe-instances \
  --query 'flatten(Reservations[*].Instances[*]) | group_by(@, &InstanceType) | to_entries | [].{InstanceType: key, InstanceIds: value[].InstanceId}' \
  --region us-east-1 \
  --output table

命令拆解

  1. flatten(Reservations[*].Instances[*]):把嵌套在Reservations下的Instances数组扁平化,变成一个直接包含所有实例对象的数组,避免多层嵌套带来的处理麻烦。
  2. group_by(@, &InstanceType):按InstanceType字段对所有实例进行分组。
  3. to_entries:把分组后的键值对对象(键是实例类型,值是对应实例数组)转换成可迭代的键值条目数组。
  4. [].{InstanceType: key, InstanceIds: value[].InstanceId}:提取每个分组的实例类型,以及该分组下所有实例的InstanceId,整理成清晰的结构。

预期输出

-----------------------------------
|          DescribeInstances      |
+-------------+-------------------+
| InstanceType| InstanceIds       |
+-------------+-------------------+
|  t2.micro   |  i-dad4180f       |
|             |  i-e8c2614b       |
|             |  i-d4cc6f77       |
|             |  i-3c43ef9f       |
+-------------+-------------------+

(注:如果你的实例中有InstanceType为空的情况,会生成一个空键的分组,包含所有对应实例的ID)

方案2:用jq工具实现更复杂的类SQL操作

如果你需要更灵活的过滤、聚合逻辑(比如类似SQL的WHERE、HAVING子句),可以用jq工具来处理JSON输出:

基础分组命令

aws ec2 describe-instances \
  --query 'flatten(Reservations[*].Instances[*])' \
  --region us-east-1 | \
jq 'group_by(.InstanceType) | map({InstanceType: .[0].InstanceType, InstanceIds: [].InstanceId})'

扩展示例:仅分组运行中的实例

你可以在jq中添加过滤逻辑,比如只统计处于running状态的实例:

aws ec2 describe-instances \
  --query 'flatten(Reservations[*].Instances[*])' \
  --region us-east-1 | \
jq 'map(select(.State.Name == "running")) | group_by(.InstanceType) | map({InstanceType: .[0].InstanceType, InstanceIds: [].InstanceId})'

为什么不直接处理表格输出?

表格输出是为了人类阅读优化的格式化文本,没有明确的结构化数据标记,用文本处理工具(比如awk、grep)处理不仅容易出错,而且逻辑会非常复杂。转成JSON后,我们可以利用成熟的结构化查询工具轻松实现类SQL的各种操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 21:32:50