最近在学习使用 AWS CLI,经常要用到 query 功能。AWS CLI 使用的查询语法是 JMESPath,因此特地在这里记录常用的 JMESPath 语法。

JMESPath 是一种查询语言,专门用于处理 JSON 对象。

JMESPath 规则和基本语法包括:

  1. 字段访问: 使用点 . 来访问 JSON 对象中的字段。例如,MemoryInfo.SizeInMiB

  2. 索引列表: 通过索引来访问列表中的元素。索引是基于零的,例如 Reservations[0].Instances[0].InstanceId

  3. 管道表达式 (|): 用于将一个表达式的输出用作另一个表达式的输入。例如,Reservations[].Instances[].Tags[] | [?Key=='Name'].Value

  4. 切片操作: 类似 Python 列表的切片,如 Reservations[0:3],表示访问前三个元素。

  5. 过滤: 使用 [] 创建过滤表达式,找到符合特定条件的元素。例如,Instances[?State.Name=='running']

  6. 投影: 即所谓的“映射操作”,对集合中的每个元素应用一个表达式。例如,Instances[].{id: InstanceId, type: InstanceType}

  7. 多选哈希: 使用 {} 从多个字段中选择并重命名输出。例如,{InstanceId: InstanceId, State: State.Name}

    例 1. 查询实例类型 mac2-m2pro.metal 的特定信息:

    aws ec2 describe-instance-types \
    --instance-type 'mac2-m2pro.metal' \
    --query 'InstanceTypes[*].{MemorySizeInMiB:MemoryInfo.SizeInMiB, NetworkPerformance:NetworkInfo.NetworkPerformance, ProcessorClockSpeed:ProcessorInfo.SustainedClockSpeedInGhz, SupportedArchitectures:SupportedArchitectures, vCPUs:VCpuInfo.DefaultVCpus}'

    解释:

    • InstanceTypes[*]: 访问数组 InstanceTypes 的所有元素
    • {MemorySizeInMiB:MemoryInfo.SizeInMiB, ...}: 对 InstanceTypes 中的每个元素,建立一个 JSON 对象,对象中每个 Key 的值自定义,Value 的值取自每个元素。
  8. 函数: JMESPath 还包含一组函数,例如 contains(), starts_with(), sort() 等,用于执行更复杂的操作。

See also: jmespath.org

中文版:www.osgeo.cn

JMESPath 使用的更多相关文章

  1. 编写一个简单的基于jmespath 的prometheus exporter

    目的很简单,因为系统好多监控指标是通过json 暴露的,并不是标准的prometheus metrics 格式,处理方法 实际上很简单,我们可以基于jsonpath 解析json数据,转换为prome ...

  2. json jmespath的使用

    在接口测试的过程中,我们经常会接触到json格式respones,我们会经常去做取JSON中某个值的操作,可以用jmespath分析.转换和选择性的提取JSON数据进行操作,功能非常强大,易读. 一. ...

  3. 比jsonpath 更方便的json 数据查询JMESPath 使用

      类似xml 的xpath json 有jsonpath 都是为了方便进行数据查询,但是jsonpath 的功能 并不是很强大,如果为了方便查询可以使用jmespath. 以下为简单使用: 查询格式 ...

  4. jmespath库解析json

    在测试过程中,经常会去JSON中的某个值,jmespath可以是除了jsonpath的另外一种选择. 下面通过几个例子来说明jmespath在python的使用 jmespath python安装 非 ...

  5. 【jmespath】—4. 进阶 Flatten Projections

    这里要怎么翻呢?扁平投影? 一.Flatten Projections 1. 核心1 这个可以暂时忽略,一个重要的核心是:对于列表/对象投影,在投影中创建投影时,原始文档的结构将保留. 说人话就是,比 ...

  6. 【jmespath】—3. 进阶 Object Projections

    继续,来看Object Projections. 一.Object Projections 上面说的是列表投影,只适用于列表.那么对于json对象,可以用对象投影. 投影最终返回的仍然是个列表,只不过 ...

  7. 【jmespath】—2. 进阶 List and Slice Projections

    Projections翻译的话说实话我也不知道翻成什么比较准确,姑且就叫"投影"吧,不过带来的功能确实非常的强大.好用. 首先,我先说下我的理解: 通配符 * 通配符生成的是一个l ...

  8. 【jmespath】—1. 基础用法

    一.jsonpath 之前我写接口自动化测试时候,对于复杂的json返回,会使用jsonpath这个第三方库,就像写xpath一样,方便的查询json元素. 因为之前写WEB自动化时候,总用xpath ...

  9. jmespath(1)基础语法

    前言 JMESPath是JSON的查询语言.您可以从JSON文档中提取和转换元素 官方文档:https://jmespath.org/tutorial.html 基本表达式 JMESPath用的最多的 ...

  10. jmespath(2)投影Projections

    投影 投影是JMESPath的关键特性之一.它允许您将表达式应用于元素集合.有五种投影: 列表投影 切片投影 对象投影 展平投影 过滤投影 处理投影需要注意的点 投影评估分为两个步骤.左侧(LHS)创 ...

随机推荐

  1. webdav协议及我的笔记方案(私有部署)

    背景 用markdown用于文章写作,有几年时间了,不是很喜欢折腾,主要就是在电脑上写,用的笔记软件就是typora.由于里面有很多工作相关的,以及个人资料相关的(包含了各种账号.密码啥的),所以不敢 ...

  2. python 转换PDF 到 EPS

    from win32com.client.dynamic import ERRORS_BAD_CONTEXT as ebc from win32com.client import DispatchEx ...

  3. k8s实战 ---- pod 基础

    如果你对k8s还不了解,可以看下前文 k8s 实战 1 ---- 初识       (https://www.cnblogs.com/jilodream/p/18245222) 什么是pod,pod在 ...

  4. ubuntu 使用natapp配置内网穿透

    前言 在自己的服务器上起了服务,但由于域名还没申请下来,无法使用域名测试微信公众号接口,辛亏看到了这个博客:Natapp内网穿透服务工具.跟随这篇博客,我搭建了自己的内网穿透服务,现在记录如下. 过程 ...

  5. Springboot+Shiro+Mybatis+mysql实现权限安全认证

    Shiro是Apache 的一个强大且易用的Java安全框架,执行身份验证.授权.密码学和会话管理.Shiro 主要分为两个部分就是认证和授权两部分 一.介绍 Subject代表了当前用户的安全操作 ...

  6. Oracle plsql中文字段乱码,where条件中文字段搜不到结果集

    设置系统环境变量 变量名:NLS_LANG 变量值:AMERICAN_AMERICA.ZHS16GBK

  7. Oracle 锁表查询和解锁方法

    system登录 查询被锁表信息 select sess.sid, sess.serial#, lo.oracle_username, lo.os_user_name, ao.object_name, ...

  8. 使用FastReport报表动态更新人员签名图片

    在一些报表模块中,需要我们根据用户操作的名称,来动态根据人员姓名,更新报表的签名图片,也就是电子手写签名效果,本篇随笔介绍一下使用FastReport报表动态更新人员签名图片. 1.设计FastRep ...

  9. P2984

    [USACO10FEB]Chocolate Giving S 题意描述 Farmer John有B头奶牛(1<=B<=25000),有N(2*B<=N<=50000)个农场,编 ...

  10. 输入Javac提示不是内部或外部命令

    先去百度搜索"jdk下载"下载最新版jdk,并安装,安装目录不用去更改,直接默认就好,下载完了之后,双击打开安装,jdk安装完成后,会接着安装jre包,(jre和jdk是配对的,不 ...