问题标签 [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.
amazon-web-services - 过滤具有特定端口和 IP ACL 的安全组的 AWS CLI 输出
我在过滤 AWS CLI describe-security-groups 输出时遇到了困难
目标:在端口 22 上找到所有具有入口规则且 cidr 为 0.0.0.0/0 的 SG
亚马逊自己的文档提供了一个示例,但声明他们的查询存在一个限制,因为它将首先过滤端口 22 的整个数据集,然后过滤 0.0.0.0/0 的整个数据集。这意味着具有以下规则的 SG 仍将触发:
这完全违背了过滤的目的,我什至不确定亚马逊为什么为该示例提供“描述具有特定规则的安全组”的标题
路线1:先是aws cli查询,然后是jq
这条路线基于我在这里找到的:https ://github.com/aws/aws-cli/issues/971
它提供了所有安全组的列表,但显示了具有 22 个 0.0.0.0/0 的任何 SG 的嵌套数据(并成功忽略了其他端口的任何 0.0.0.0/0 ACL) 在下面的输出中,我感兴趣的是 SG1 , SG2/SG3 需要被过滤掉。
这是一个很好的第一步,因为我已经消除了与端口 22 无关的 0.0.0.0/0 ACL。但是当我尝试运行 jq 来简单地删除具有空数据集的条目时,我遇到了困难钥匙被剥夺了。
- 当我尝试更深入地选择嵌套部分时,我最终会遇到无法迭代 null 之类的错误
- 如果我尝试使用包含,我什么也得不到,所以我什至不确定我哪里出错了
路线 2:jq 未查询的 CLI 输出
我从一开始就使用 jq 无法摆脱原始 AWS 示例的陷阱,我可以首先查询包含端口 22 的所有 SG,然后查询 0.0.0.0/0 的任何 ACL,其中当然给了我误报。由于 jq 的流性质,我还没有弄清楚如何检查条件 A(端口 22),然后仅在与条件 A 相关的项目上检查条件 B(0.0.0.0/0)。
这是 2 个 SG 的一些经过净化的原始 CLI 输出,我需要再次获取第一个,而不会在第二个触发误报
amazon-web-services - 使用 JMESPath 在 AWS Auto Scaling 组中搜索两个标签
我有以下 python boto3 代码。让我获得所有带有“SubEnvironment”标签且值为“teal”的 AutoScalingGroup 名称效果很好
我真正想要的是在其中添加值为“foo”的“StackName”,以便我得到我想要的结果。我不熟悉 JMESPath,所以我不知道该怎么做。
python - 当值为数字时,使用 jmespath 从键/值对中获取值
我正在尝试使用 jmespath 从 JSON 文档中检索密钥(instanceId)。JSON 文档如下所示:
我觉得这应该工作:
jmespath.search('instances[?hostIp=="10.200.10.150"].instanceId', targets)
但它返回一个空集。当用字符串(例如字母)替换IP 地址时,它返回instanceId。当它是一个数字时,用于搜索值的 jmespath 语法是什么?最终,我试图从hostIp 中获取instanceId。
aws-cli - 查询多个值
我正在尝试按多个值进行过滤,但是我似乎无法使 and 子句起作用(例如 filter1 和 filter 2 ...等):
显示数据库名称为“testing”的快照
显示名为“test1”的快照
显示来自名为 test1 的数据库测试的快照
如何做到这一点?
ansible - 如何在jmespath中合并一系列对象
include_vars
执行with后我得到了一系列结果with_items
我正在尝试将带有结果的对象放到一个仅包含这些tag_Cluster_*
东西的平面对象中。
查询results[].ansible_facts
结果是一个数组,例如:
[{tag_Cluster_A:{}},{tag_Cluster_B:{}}]
距离期望结果只有 1 步。
我如何将这些组合在一起?
python - 使用 jmespath 过滤掉 Json
我有这个简单的 Python 脚本,它应该是更大的一部分我只是不知道如何使用 jmespath
我想要的是基本上删除具有不可预测值的键的行(在完美的世界中,我会将值切换为通用的值) - 例如:last-sent-msg-timestamp、session-duration、stateful-stats:last-received- rpt-msg-时间戳。完美地,我希望保留其他所有内容,尽管我可以忍受丢失拓扑和节点标签。
问题是我只能使用一个 jmespath.search并且我只能做一个 jmespath 表达式。我也不能使用 Python 中的任何其他东西——这个脚本只是示例。
这可能与 jmespath 吗?由于项目的限制,这是目前我最好的选择。
json - JMESPpath:按嵌套属性过滤
我正在尝试使用 JMESPath jp
( https://github.com/jmespath/jp ) 实用程序应用过滤器。我的目标是只让状态为“已添加”并0000debf17cff54b
过滤掉特定设备 ID(例如)的流。
我正在尝试这样的事情:
cat test | ./jp '[][?id=="of:00002259146f7743" && state=="ADDED"]'
但结果是[]
jmespath - 如何使用 JMESPath 过滤此 JSON 数据的子元素
我正在使用 Ansible 在多个环境中创建用户。我正在尝试将包含创建新 unix 用户所需的所有数据的用户 var 合并到一个全局共享的 var 中。为此,我计划使用子元素来控制在哪些主机上创建哪些用户等。
但是,我正在努力弄清楚如何过滤这些数据,以便我可以为当前主机提供正确的凭据集。
我需要将“环境”键过滤为仅具有我正在寻找的“名称”值的元素,但在结果中保留父对象的键。
我有什么/我想要什么:
JSON:
我想要的是:
更多信息:
我能够使用此查询接近,但我不知道如何进一步缩小结果范围,以便保留每个“用户”对象中的所有键,但将子元素“环境”过滤到匹配的那些我的查询。
JMESPath 查询:users[?environments[?name=='env_one']]
输出:
如果有用的话,这是 YAML 中的原始数据集:
YAML:
json - How do I filter elements from a list correctly with JMESPath and Ansible?
I have the following structure.
I want to print all elements where [].tags.Name contains the string "SECOND" (so just the second element. How do I achieve this?
This is what I've tried, but it's not working.
I tried using http://jmespath.org but can't extract the data the way I want either.
json - 如何在 ansible playbook 中使用 JMESPath 进行排序?
在播放 ansible 剧本期间,我有一个由 consul 从 consul 返回的数组:
我想"Node": {"Node" : "hostname"}
在 ansible playbook中对其进行排序
我已经阅读了 JMESPath 和 ansible 文档一整天,但仍然不知道如何实现它(顺便说一句,在 jq 中很容易,sort_by(.Node.Node)
但这个技巧不适用于 ansible)