最近在学习使用 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. 没想你是这样的AI。。。

  2. 羊城杯决赛Misc

    羊城杯决赛Misc easy00aes比赛时没离线0宽环境摆了 LmqHmAsk没思路,赛后看着群里各位师傅讨论才明白预期解,wp里直接放toto师傅的脚本了 这里放个toto师傅博客: https: ...

  3. Java开发框架演变过程

    JavaWeb开发简史 Java框架创始人 Java框架说明 Spring: 把应用程序中的bean统一交给Spring进行管理控制,简化了我们的代码操作,和降低了代码的耦合度,Spring框架基本上 ...

  4. Log4j日志输出级别详解

    log4j定义了8个级别的log 日志记录器(Logger)的行为是分等级的: 1.分为OFF(关闭所有日志).FATAL(致命错误).ERROR(异常报错).WARN(潜在错误).INFO.DEBU ...

  5. C++ Cast And Go Cast

    C++ A static_cast can be used to explicitly convert between related pointer types, such as void* and ...

  6. 微软GraphRAG框架源码解读

    两个月前,微软发布了GraphRAG的论文<From Local to Global: A Graph RAG Approach to Query-Focused Summarization&g ...

  7. 2 手机号登录时,调的不是login接口,而是注册的一个接口

    手机号登录时,调的不是login接口,而是注册的一个接口

  8. vscode配置项

    因为vscode的默认配置,导致现在用的不是很舒服.总结了以下配置能让你的vscode用着更舒服. 1: 问题: 输入log按tab快速生成代码后,提示居然没了? 解决方案: "editor ...

  9. 可视化—gojs 超多超实用经验分享(二)

    想了想序号还是接上一篇分享的的序号接着写,如果在本文中没有获取需要的答案,可以移步去看看上一篇的分享.gojs 超多超实用经验分享(一) 目录 22. 指定线段连接到节点的某一个特定的接口上 23. ...

  10. webpack4.15.1 学习笔记(十) — 常见 loader 使用

    目录 style -loader <= css-loader <= less-loader postcss-loader file-loader url-loader html-withi ...