如何使用 JMESPath 和 Ansible 正确过滤列表中的元素?

How do I filter elements from a list correctly with JMESPath and Ansible?

我有以下结构。

[
            {
                "ami_launch_index": 0, 
                "architecture": "x86_64",                     
                "instance_type": "t2.micro", 
                "monitoring": {
                    "state": "disabled"
                } ,
                "placement": {
                    "availability_zone": "eu-central-1a", 
                    "group_name": "", 
                    "tenancy": "default"
                },                 
                "tags": {
                    "Name": "MYNAME 1", 
                    "Project": "MY PROJECT", 
                    "Purpose": "MYTEST"
                }, 
                "virtualization_type": "hvm"
            }, 
            {
                "ami_launch_index": 2, 
                "architecture": "x86_64",              
                "instance_type": "t2.micro", 
                "monitoring": {
                    "state": "disabled"
                }, 
                "placement": {
                    "availability_zone": "eu-central-1a", 
                    "group_name": "", 
                    "tenancy": "default"
                },
                "tags": {
                    "Name": "MYNAME 2", 
                    "Project": "MY SECOND PROJECT", 
                    "Purpose": "WHY THE HECK NOT"
                }, 
                "virtualization_type": "hvm"
            }
        ]

我想打印 [].tags.Name 包含字符串 "SECOND" 的所有元素(所以只是第二个元素。我该如何实现?

这是我试过的方法,但没有用。

- debug:
        msg: "{{ instances.stdout | from_json | json_query(\"[][?contains(tags.Name, 'SECOND')]\") }}"

我尝试使用 http://jmespath.org,但也无法按照我想要的方式提取数据。

要获取在 tags.Name 中具有 SECOND 的项目,您可以使用此查询:

[?contains(tags.Name,'SECOND')]

但您的示例数据似乎不匹配任何内容,因为 SECOND 仅在 Project 属性 而不是 Name.