Tous les produits
Search
Centre de documentation

Alibaba Cloud CLI:Filter and format output

Dernière mise à jour :Aug 11, 2026

Les commandes Alibaba Cloud CLI renvoient les résultats au format JSON. Utilisez l'option --cli-query pour extraire des champs spécifiques à l'aide d'expressions JMESPath (la sortie reste au format JSON), ou l'option --output pour afficher les résultats sous forme de tableau. Vous pouvez également combiner les deux : filtrez d'abord, puis présentez les données dans un tableau.

Remarque

Avant d'exécuter les commandes présentées dans cette rubrique, assurez-vous qu'Alibaba Cloud CLI est installé et configuré. Pour plus d'informations, consultez les rubriques Install, update, and uninstall Alibaba Cloud CLI et Configure and manage credentials.

Filtrer la sortie JSON avec --cli-query

L'option --cli-query accepte une expression JMESPath et l'applique à la réponse de l'API. Le résultat filtré reste au format JSON, ce qui permet aux scripts et aux outils en aval, tels que jq, de le traiter directement.

Syntaxe :

aliyun <product> <operation> --cli-query "<JMESPath expression>"

Les exemples suivants s'appuient sur la réponse de l'opération DescribeInstances d'ECS pour illustrer des modèles de filtrage courants.

Exemple 1 : Extraire une liste de valeurs

Extrayez tous les ID d'instance.

aliyun ecs DescribeInstances --biz-region-id cn-hangzhou --cli-query "Instances.Instance[].InstanceId"

Exemple de sortie :

[
  "i-1234567891234567****",
  "i-abcdefghijklmnop****"
]

Exemple 2 : Extraire plusieurs champs

Extrayez les champs InstanceId et Status de chaque instance.

aliyun ecs DescribeInstances --biz-region-id cn-hangzhou --cli-query "Instances.Instance[].[InstanceId,Status]"

Exemple de sortie :

[
  [
    "i-1234567891234567****",
    "Stopped"
  ],
  [
    "i-abcdefghijklmnop****",
    "Running"
  ]
]

Exemple 3 : Filtrer selon une condition

Extrayez uniquement les ID des instances en cours d'exécution.

aliyun ecs DescribeInstances --biz-region-id cn-hangzhou --cli-query "Instances.Instance[?Status=='Running'].InstanceId"

Exemple de sortie :

[
  "i-abcdefghijklmnop****"
]

Exemple 4 : Restructurer la sortie

Utilisez une expression de hachage multisélection JMESPath pour restructurer la réponse en un tableau d'objets avec des noms de clé personnalisés.

aliyun ecs DescribeInstances --biz-region-id cn-hangzhou --cli-query "Instances.Instance[].{id:InstanceId,status:Status}"

Exemple de sortie :

[
  {
    "id": "i-1234567891234567****",
    "status": "Stopped"
  },
  {
    "id": "i-abcdefghijklmnop****",
    "status": "Running"
  }
]
Remarque

Les exemples précédents couvrent uniquement la syntaxe courante. JMESPath prend également en charge les expressions pipe, les fonctions intégrées et d'autres fonctionnalités avancées. Pour consulter la syntaxe complète, reportez-vous au JMESPath Tutorial.

Si --cli-query renvoie null, vérifiez que les noms de champ dans votre expression correspondent exactement aux clés de la réponse de l'API (les noms de champ sont sensibles à la casse).

Choisir la bonne option

Utilisez le tableau suivant pour déterminer quelle option correspond le mieux à votre scénario :

Scénario

Option

Description

Extraire des valeurs dans un script

--cli-query

La sortie est au format JSON, que des outils tels que jq peuvent traiter directement.

Parcourir les résultats dans un terminal

--output

Un tableau est plus facile à lire qu'un fichier JSON brut.

Filtrer et afficher sous forme de tableau

Les deux

L'option --cli-query filtre ou restructure d'abord les données, puis l'option --output met en forme le résultat sous forme de tableau. Consultez l'exemple 4 de la section --cli-query ci-dessus.

Paramètres de l'option --output

Alibaba Cloud CLI propose l'option --output pour extraire des champs spécifiques de la réponse et les afficher sous forme de tableau.

L'option --output prend en charge les paramètres suivants :

Paramètre

Description

Exemple

cols

Colonnes à afficher dans le tableau.

Format : cols="<column1>,<column2>". Séparez les noms de plusieurs colonnes par des virgules (,).

  • Pour les types object, les noms de colonne doivent correspondre aux clés de la réponse JSON.

  • Pour les types array, définissez des noms de colonne personnalisés et mappez-les à l'index de tableau basé sur zéro à l'aide d'un deux-points (:).

  • Type object : cols="InstanceId,Status"

  • Type array : cols="name:0,type:1"

rows

Chemin de la source de données pour les lignes du tableau. Utilise la syntaxe JMESPath pour spécifier l'emplacement des données dans la réponse JSON.

rows="Instances.Instance[]"

num

Indique s'il faut afficher une colonne de numéros de ligne.

Lorsque ce paramètre est défini sur true, une colonne de numéros de ligne est ajoutée à gauche du tableau. La numérotation des lignes commence à partir de 0 (et non de 1). Valeur par défaut : false.

num="true"

Exemples

Contexte

Les opérations de requête de l'API Alibaba Cloud renvoient des données structurées au format JSON, qui peuvent être difficiles à lire.

  1. Prenons l'exemple de toutes les instances ECS. Exécutez la commande suivante.

    aliyun ecs DescribeInstances --biz-region-id cn-hangzhou
  2. Exemple de réponse (partiel) :

    {
      "PageNumber": 1,
      "TotalCount": 2,
      "PageSize": 10,
      "RequestId": "2B76ECBD-A296-407E-BE17-7E668A609DDA",
      "Instances": {
        "Instance": [
          {
            "ImageId": "ubuntu_16_0402_64_20G_alibase_20171227.vhd",
            "InstanceTypeFamily": "ecs.xn4",
            "VlanId": "",
            "InstanceId": "i-1234567891234567****",
            "Status": "Stopped",
            "SecurityGroupIds": {
              "SecurityGroupId": [
                "sg-bp12345678912345****",
                "sg-bp98765432198765****"
              ]
            }
          },
          {
            "ImageId": "ubuntu_16_0402_64_20G_alibase_20171227.vhd",
            "InstanceTypeFamily": "ecs.xn4",
            "VlanId": "",
            "InstanceId": "i-abcdefghijklmnop****",
            "Status": "Running",
            "SecurityGroupIds": {
              "SecurityGroupId": [
                "sg-bp1abcdefghijklm****",
                "sg-bp1zyxwvutsrqpon****"
              ]
            }
          }
        ]
      }
    }

Exemple 1 : Extraire un champ de niveau racine

  1. Exécutez la commande suivante pour extraire le champ RequestId. Étant donné que ce champ se trouve au niveau racine de la réponse, vous n'avez pas besoin du paramètre rows.

    aliyun ecs DescribeInstances --biz-region-id cn-hangzhou --output cols=RequestId
  2. Exemple de sortie :

    RequestId
    ---------
    2B76ECBD-A296-407E-BE17-7E668A609DDA

Exemple 2 : Extraire des champs imbriqués

  1. Exécutez la commande suivante pour extraire les champs InstanceId et Status. Le chemin JMESPath pour ces champs est Instances.Instance[] ; définissez donc le paramètre rows sur rows="Instances.Instance[]". Pour plus d'informations sur la syntaxe JMESPath, consultez le JMESPath Tutorial.

    aliyun ecs DescribeInstances --biz-region-id cn-hangzhou --output cols="InstanceId,Status" rows="Instances.Instance[]"
  2. Exemple de sortie :

    InstanceId             | Status
    ----------             | ------
    i-12345678912345678123 | Stopped
    i-abcdefghijklmnopqrst | Running
  3. Pour afficher les numéros de ligne, définissez le paramètre num sur true. Exemple de sortie :

    Num | InstanceId             | Status
    --- | ----------             | ------
    0   | i-12345678912345678123 | Stopped
    1   | i-abcdefghijklmnopqrst | Running

Exemple 3 : Extraire des éléments d'un tableau

  1. Exécutez la commande suivante pour extraire des éléments spécifiques du tableau SecurityGroupId. Le chemin JMESPath pour ce tableau est Instances.Instance[].SecurityGroupIds.SecurityGroupId.

    aliyun ecs DescribeInstances --biz-region-id cn-hangzhou --output cols="sg1:0,sg2:1" rows="Instances.Instance[].SecurityGroupIds.SecurityGroupId"
  2. Exemple de sortie :

    sg1                     | sg2
    ---                     | ---
    sg-bp12345678912345**** | sg-bp98765432198765****
    sg-bp1abcdefghijklm**** | sg-bp1zyxwvutsrqpon****