Запрос jmespath в Azure CLI

Для приведенного ниже JSON я пытаюсь получить список местоположений для определенного типа ресурса.

Эта команда:

az provider list --query "[?namespace=='Microsoft.Compute']" 

дает мне пример вывода (слишком много, чтобы включать все) в конце. Как мне затем запросить определенные типы ресурсов? Я пробовал следующее, но не работает:

az provider list --query "[?contains(namespace, 'Microsoft.Compute')] | [?contains(resourceType, 'virtualMachines']"

Пример вывода первой команды:

[
  {
    "id": "/subscriptions/fed7f475-6055-4e3c-8529-c1345df70589/providers/Microsoft.Compute",
    "namespace": "Microsoft.Compute",
    "registrationState": "Registered",
    "resourceTypes": [
      {
        "aliases": null,
        "apiVersions": [
          "2017-03-30",
          "2016-08-30",
          "2016-04-30-preview",
          "2016-03-30",
          "2015-06-15",
          "2015-05-01-preview"
        ],
        "locations": [
          "East US",
          "East US 2",
          "West US",
          "Central US",
          "North Central US",
          "South Central US",
          "North Europe",
          "West Europe",
          "East Asia",
          "Southeast Asia",
          "Japan East",
          "Japan West",
          "Australia East",
          "Australia Southeast",
          "Brazil South",
          "South India",
          "Central India",
          "West India",
          "Canada Central",
          "Canada East",
          "West US 2",
          "West Central US",
          "UK South",
          "UK West",
          "Korea Central",
          "Korea South"
        ],
        "properties": null,
        "resourceType": "availabilitySets"
      },
  }
]

person Adoyt    schedule 10.03.2017    source источник


Ответы (1)


Это должно работать:

az provider list --query "[?namespace=='Microsoft.Compute'].resourceTypes[].{resourceType:resourceType, locations:locations} | [?resourceType=='virtualMachines'] | [0].locations"

Я не утверждаю, что это самый простой способ сделать это - я все еще сам изучаю jmespath :)

person Johan Stenberg - MSFT    schedule 27.09.2017