最近在学习使用 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. NAT类型检测方案

    一.NAT分类 NAT大致有4种类型: 1. Full Cone NAT 完全锥形NAT,所有从同一个内网IP和端口号发送过来的请求都会被映射成同一个外网IP和端口号,并且任何一个外网主机都可以通过这 ...

  2. 统信 UOS 重置Root账号密码 获取 Root 权限

    统信服务器默认无法用root 账号登入系统,用普通管理员登入后在切换至root账户下即可,初次使用系统时 切换至root账户前需要做很多配置 1.同信切换root账户首先要激活下系统,可以选择试用期激 ...

  3. UG二次开发 PYTHON 环境配置

    NX 二次开发 PYTHON VSCODE 环境配置 我电脑上装的是WIN11 NX1988 在电脑的UG的安装文件夹内找到 python 一般在 xx\NXBIN 在所在的文件夹内,运行python ...

  4. ELK日志缺失问题排查-多行日志聚合Logstash配置问题

    1. 背景 推荐系统的推荐请求追踪日志,通过ELK收集,方便遇到问题时,可以通过唯一标识sid来复现推荐过程 最近在碰到了几个bad case,需要通过sid来查询推荐日志,但发现部分无法在kiban ...

  5. VUE商城项目 -商品列表功能 - 手稿

  6. Java 面向对象编程之InstanceOf关键词和多态

    InstanceOf关键字使用,什么是多态 InstanceOf关键字 是Java的一个二元操作符(运算符),也是Java的保留关键字 语法 //如果该object 是该class的⼀个实例,那⼀个实 ...

  7. MQ和RabbitMQ

    一.微服务间通讯有同步和异步两种方式: 同步通讯:就像打电话,需要实时响应. 异步通讯:就像发邮件,不需要马上回复. Feign调用就属于同步方式,虽然调用可以实时得到结果,但存在下面的问题: 1.耦 ...

  8. 苹果手机使用charles抓包无法下载charles证书

    苹果手机使用charles抓包无法下载charles证书的问题记录: 使用:chls.pro/ssl       --------无效 使用:http://chls.pro/ssl      ---- ...

  9. Laravel 组件

    创建组件命令 php artisan make:component Alert make:component 命令还将为组件创建视图模板.视图将放在 resources/views/component ...

  10. [oeasy]python0068_控制序列_清屏_控制输出位置_2J

    光标位置 回忆上次内容 上次了解了键盘演化的过程 ESC 从 组合键 到 独立按键 ESC 的目的 是进入控制序列 配置控制信息 控制信息 \033[y;xH 设置光标位置 \033[2J 清屏 这到 ...