首页 > 解决方案 > 如何使用 Azure CLI 过滤 JMESPath 中的元素数组

问题描述

我是 JMESPath 解析的新手。 az network lb inbound-nat-rule list --resource-group MYRG --lb-name MYLB正在返回低于输出,我只想过滤backendIpConfiguration.idbackendPort在响应中。

下面的响应中有一系列元素。

[
  {
    "backendIpConfiguration": {
      "applicationGatewayBackendAddressPools": null,
      "applicationSecurityGroups": null,
      "etag": null,
      "gatewayLoadBalancer": null,
      "id": "/subscriptions/XXXX/XXX/XXX/providers/Microsoft.Network/networkInterfaces/XXX/ipConfigurations/XXXX",
      "loadBalancerBackendAddressPools": null,
      "loadBalancerInboundNatRules": null,
      "name": null,
      "primary": null,
      "privateIpAddress": null,
      "privateIpAddressVersion": null,
      "privateIpAllocationMethod": null,
      "privateLinkConnectionProperties": null,
      "provisioningState": null,
      "publicIpAddress": null,
      "resourceGroup": "MYRG01",
      "subnet": null,
      "type": null,
      "virtualNetworkTaps": null
    },
    "backendPort": 1367,
    "enableFloatingIp": false,
    "enableTcpReset": false,
    "etag": "W/\"XXXXX-1173-49ad-8d1f-40347c00d88a\"",
    "frontendIpConfiguration": {
      "id": "/subscriptions/XXXX/XXX/XXX/providers/Microsoft.Network/networkInterfaces/XXX/ipConfigurations/XXXX",
      "resourceGroup": "MYRG01"
    },
    "frontendPort": 1367,
    "id": "/subscriptions/XXXX/XXX/XXX/providers/Microsoft.Network/networkInterfaces/XXX/ipConfigurations/XXXX",
    "idleTimeoutInMinutes": 5,
    "name": "rule1",
    "protocol": "Tcp",
    "provisioningState": "Succeeded",
    "resourceGroup": "MYRG01",
    "type": "Microsoft.Network/loadBalancers/inboundNatRules"
  },
  {
    "backendIpConfiguration": {
      "applicationGatewayBackendAddressPools": null,
      "applicationSecurityGroups": null,
      "etag": null,
      "gatewayLoadBalancer": null,
      "id": "/subscriptions/XXXX/XXX/XXX/providers/Microsoft.Network/networkInterfaces/XXX/ipConfigurations/XXXX",
      "loadBalancerBackendAddressPools": null,
      "loadBalancerInboundNatRules": null,
      "name": null,
      "primary": null,
      "privateIpAddress": null,
      "privateIpAddressVersion": null,
      "privateIpAllocationMethod": null,
      "privateLinkConnectionProperties": null,
      "provisioningState": null,
      "publicIpAddress": null,
      "resourceGroup": "MYRG02",
      "subnet": null,
      "type": null,
      "virtualNetworkTaps": null
    },
    "backendPort": 3006,
    "enableFloatingIp": false,
    "enableTcpReset": false,
    "etag": "W/\"XXXX-1173-49ad-8d1f-40347c00d88a\"",
    "frontendIpConfiguration": {
      "id": "/subscriptions/XXXX/XXX/XXX/providers/Microsoft.Network/networkInterfaces/XXX/ipConfigurations/XXXX",
      "resourceGroup": "MYRG02"
    },
    "frontendPort": 3006,
    "id": "/subscriptions/XXXX/XXX/XXX/providers/Microsoft.Network/networkInterfaces/XXX/ipConfigurations/XXXX",
    "idleTimeoutInMinutes": 5,
    "name": "rule2",
    "protocol": "Tcp",
    "provisioningState": "Succeeded",
    "resourceGroup": "MYRG02",
    "type": "Microsoft.Network/loadBalancers/inboundNatRules"
  }
]

标签: jsonazure-clijmespath

解决方案


JMESPath 中的过滤非常简单,过滤器和多选哈希的文档非常简单。

在这里,一个简单的查询,如:

[].{backendIpConfigurationId: backendIpConfiguration.id, backendPort: backendPort}

将为您提供过滤后的 JSON:

[
  {
    "backendIpConfigurationId": "/subscriptions/XXXX/XXX/XXX/providers/Microsoft.Network/networkInterfaces/XXX/ipConfigurations/XXXX",
    "backendPort": 1367
  },
  {
    "backendIpConfigurationId": "/subscriptions/XXXX/XXX/XXX/providers/Microsoft.Network/networkInterfaces/XXX/ipConfigurations/XXXX",
    "backendPort": 3006
  }
]

仅包含您正在寻找的信息。


推荐阅读