问题标签 [jmespath]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
json - 用于查找主机和设备的最新快照的 JSON 查询?
我正在尝试使用该aws ec2
命令在 AWS 中查找设备和主机的最新快照。我从aws ec2 describe-snapshots
.
如您所见,我可以为同一主机(请参阅带有密钥主机名和设备名的标签)和设备创建多个快照。开始时间不同。
如何在 Ansible 中查询此 JSON 以获得主机名和设备的最新快照?我不经常这样做,因此对查询语法感到困惑。
到目前为止,我有以下内容。
但是,如何选择 Tags.Value 等于 Key 为“主机名”的某个值的所有快照元素?然后我如何从我得到的列表中选择最新的?
jmespath - 如何从父项中获取所有子元素的列表
我有一个字典列表,其中包含一个字段中的另一个列表。我想“展平”该列表,因此它为每个子元素提供了从父项复制到其中的一个字段(或一些字段)。例子:
源数据:
预期结果:
jmespath - JMESPath 的新手-> 没有键/值对的过滤器数组
我正在尝试使用 jmes 过滤对象列表,
到目前为止,我能够过滤一个相当大的数据结构,所以我得到一个这样的结构列表:
我需要的是过滤这个列表,所以我只得到目标数组中包含“blabla”的元素。我似乎没有找到这样的东西。实现这种过滤器的正确方法是什么?我找到的所有信息都是用于过滤包含键/值对的数组......
ansible - 过滤地址匹配条件
我想将允许的 VLAN 列表作为变量提供给我的服务器。
Ansible playbook 应该能够根据这个 VLAN 过滤服务器的 IP 地址。
我有服务器上所有可用 IP 地址的列表(
ansible_all_ipv4_addresses
来自 ansible 事实)我有一个全局变量
/li>my_subnets
:而且我有每个服务变量
/li>allowed_vlans
:
我正在寻找一种如何模板化的"192.168.2.0/24"
方法"192.168.5.0/24"
我在想:
1.金贾方式
从匹配的项目中提取并通过ipaddr ()过滤器映射它们。my_subnets
allowed_vlans
ansible_all_ipv4_addresses
2.JSON查询方式
我试过了:
但似乎 json_query 没有使用 python 语法来评估数组中是否有东西。
jmespath - jmesPath 查询查找帮助。这个查询对吗?
我有这个 JSON 对象:
我有几个具有不同索引值的对象。例如,如果我想对此进行匹配,id/name: "BBCommercialPropertyStructureFloodCoverage"
并且位置值为 0,结构值为 1,我该如何使用 jmespath 来做到这一点?
到目前为止我有这个:
const floodCoverageQuery = [?id.name=='BBCommercialPropertyStructureFloodCoverage' && link[key=='Location' && select.value==0]] && link[key=="structure" && select.value==1]]
这是正确的吗?
jsonpath - 根据子键过滤 JSON 对象
我正在尝试找到一种应用以下过滤器的程序方式。给定以下对象,如何获取包含 child 的所有顶级键c2
?
预期结果:
我需要 JSONPath、JMESPath 或 ObjectPath 语法中的过滤器。
我在 ObjectPath 中尝试过无数种组合,例如 JSONPath$.*[@.b.c2]
中的东西$..[?(b.c2)]
,直至 JMESPath 之类的构造@.* | [?contains(keys(@), 'c2')]
-@.*[b.c2] | @
都无济于事。
ansible - 具有值范围的 JMESPath 查询表达式
我有下面的 json 有一个范围。我正在尝试从 json 中获取要用作 ansible 变量的范围中特定条目的值。
例如,我想使用 JSON 查询过滤器从下面的 json 中获取folder
of 的值,server002
以用作 ansible 变量。请帮忙。
amazon-s3 - 从 AWS CLI 响应中消除元素
注意:我实际上是在 Python 和 Boto3 库中尝试这样做,但我将使用 AWS CLI 来解释我正在尝试做什么。
我正在 AWS 中对我的存储桶进行 list-object-versions 调用...
响应如下...
我想告诉 AWS 不要使用 DeleteMarkers 返回任何结果。
关于如何使用 --query 和 JMESPath 消除 DeleteMarkers 但在响应中保留 CommonPrefixes & Versions 的任何想法?
amazon-web-services - JMESPath 在树中下降以进行过滤
我想要达到的目标
我想使用describe-instances
.
到目前为止我尝试了什么
aws ec2 describe-instances --filters "Name=tag:Backup,Values=True" --query 'Reservations[].Instances[].{Name: Tags[?Key==`Name`].Value | [0], Id: InstanceId, Block: BlockDeviceMappings[?DeviceName==RootDeviceName].Ebs.VolumeId, Test: RootDeviceName}'
什么不工作
几件事:
Ebs.VolumeId
不是 的直系后裔DeviceName
,是的后裔BlockDeviceMappings
。RootDeviceName
不是 的后代BlockDeviceMappings
。
因此,当我尝试拉动RootDeviceName
并相应地搜索时VolumeId
,我得到一个空白字段(块:用于测试,与案例无关)。
前 2 个字段是正确的。
提前致谢!
amazon-web-services - AWS CLI 命令/JMESPATH 查询问题
你们中的任何人都可以帮我找出 CLI 命令 /JMESPATH 查询中的问题 - “什么不起作用?
下面给出的 PS JSON 输出是有效的,您可以使用输出在 JMESPATH.org 上测试其中的 JMESPATH 查询部分
什么有效?
1) aws ec2 describe-security-groups --query SecurityGroups[?GroupId=='sg-0a26abc0a00000000'].IpPermissions[]
2) aws ec2 describe-security-groups --query SecurityGroups[?GroupId=='sg-0a26abc0a00000000'].IpPermissions[].FromPort
3)aws ec2 describe-security-groups --query SecurityGroups[?GroupId=='sg-0a26abc0a00000000'].IpPermissions[].IpProtocol
什么不工作?
1) aws ec2 describe-security-groups --query SecurityGroups[?GroupId=='sg-0a26abc0a00000000'].IpPermissions[?IpProtocol=='tcp'].IpProtocol
2)aws ec2 describe-security-groups --query SecurityGroups[?GroupId=='sg-0a26abc0a00000000'].IpPermissions[?FromPort=='22'].FromPort
JSON 输出
预期/实际结果
aws ec2 describe-security-groups --query SecurityGroups[?GroupId=='sg-0a26abc0a00000000'].IpPermissions[?IpProtocol=='tcp'].IpProtocol
结果
预期 - tcp,实际 - 不返回结果
aws ec2 describe-security-groups --query SecurityGroups[?GroupId=='sg-0a26abc0a00000000'].IpPermissions[?FromPort=='22'].FromPort
结果
预期 - 22,实际 - 不返回结果