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

AWS CLI多标识符过滤:表达式中的点是否可选?为何结果一致?

AWS CLI查询中JMESPath表达式的点是否可选?

在使用AWS CLI通过--query参数筛选多个实例属性时,发现两种写法返回结果完全一致:一种是在数组索引后加.再跟多选列表,另一种直接在数组索引后接多选列表,但官方文档里没说明这个点可以省略。想搞清楚这个点是不是可选,以及为什么两种写法效果相同。

示例命令及结果

带点的查询命令

aws ec2 describe-instances \ 
  --query 'Reservations[].Instances[].[InstanceId,InstanceType]'

返回结果:

[
    [
        "i-0f74894a273e9a76f",
        "t2.micro"
    ],
    [
        "i-007598b789e08ca19",
        "t2.micro"
    ],
    [
        "i-0e2defdabf5771dfa",
        "t2.micro"
    ],
    [
        "i-07db1ecca76653ae5",
        "t2.micro"
    ]
]

不带点的查询命令

aws ec2 describe-instances \
  --query 'Reservations[].Instances[][InstanceId,InstanceType]'

返回结果:

[
    [
        "i-0f74894a273e9a76f",
        "t2.micro"
    ],
    [
        "i-007598b789e08ca19",
        "t2.micro"
    ],
    [
        "i-0e2defdabf5771dfa",
        "t2.micro"
    ],
    [
        "i-07db1ecca76653ae5",
        "t2.micro"
    ]
]

原因说明

AWS CLI的--query参数基于JMESPath语法,而JMESPath规范允许这种省略.的写法,属于语法糖:

  • 当数组展开表达式(如Instances[])后直接跟另一个表达式(如多选列表[InstanceId,InstanceType])时,会自动隐式处理为子表达式,等价于显式添加.的写法。
  • 两种写法都会对数组中的每个元素应用后续的属性选择逻辑,因此最终返回结果完全一致。

虽然AWS官方文档未特意提及这个细节,但这是JMESPath本身的语法特性,所以两种写法效果相同。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 06:55:21