Todos os produtos
Search
Central de documentação

Alibaba Cloud CLI:Filtrar e formatar saída

Última atualização: Jun 28, 2026

Os comandos do Alibaba Cloud CLI retornam resultados no formato JSON. Use a opção --cli-query para extrair campos específicos com expressões JMESPath (a saída permanece em JSON) ou a opção --output para exibir os resultados como tabela. Você também pode combinar as duas abordagens: filtre primeiro e depois tabule.

Nota

Antes de executar os comandos deste tópico, verifique se o Alibaba Cloud CLI está instalado e configurado. Para mais informações, consulte Instalar, atualizar e desinstalar o Alibaba Cloud CLI e Configurar e gerenciar credenciais.

Filtrar saída JSON com --cli-query

A opção --cli-query aceita uma expressão JMESPath e a aplica à resposta da API. O resultado filtrado permanece em JSON, o que permite o processamento direto por scripts e ferramentas subsequentes, como jq.

Sintaxe:

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

Os exemplos a seguir usam a resposta do ECS DescribeInstances para demonstrar padrões comuns de filtragem.

Exemplo 1: Extrair uma lista de valores

Extraia todos os IDs das instâncias.

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

Saída de exemplo:

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

Exemplo 2: Extrair vários campos

Extraia o InstanceId e o Status de cada instância.

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

Saída de exemplo:

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

Exemplo 3: Filtrar por condição

Extraia apenas os IDs das instâncias em execução.

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

Saída de exemplo:

[
  "i-abcdefghijklmnop****"
]

Exemplo 4: Reestruturar a saída

Use uma expressão hash de multisseleção JMESPath para reorganizar a resposta em um array de objetos com nomes de chave personalizados.

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

Saída de exemplo:

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

Os exemplos anteriores abrangem apenas a sintaxe comum. O JMESPath também oferece suporte a expressões pipe, funções integradas e outros recursos avançados. Para a sintaxe completa, consulte o Tutorial do JMESPath.

Se --cli-query retornar null, verifique se os nomes dos campos na expressão correspondem exatamente às chaves na resposta da API (os nomes dos campos diferenciam maiúsculas de minúsculas).

Escolha a opção adequada

Use a tabela a seguir para decidir qual opção melhor se adapta ao seu cenário:

Cenário

Opção

Descrição

Extrair valores em um script

--cli-query

A saída é JSON, que ferramentas como jq processam diretamente.

Navegar pelos resultados no terminal

--output

Uma tabela facilita a leitura em comparação ao JSON bruto.

Filtrar e exibir como tabela

Ambas

--cli-query filtra ou reestrutura os dados primeiro; em seguida, --output formata o resultado como tabela. Consulte o Exemplo 4 na seção --cli-query acima.

Parâmetros da opção --output

O Alibaba Cloud CLI fornece a opção --output para extrair campos específicos da resposta e exibi-los em formato de tabela.

A opção --output aceita os seguintes parâmetros:

Parâmetro

Descrição

Exemplo

cols

Colunas a exibir na tabela.

Formato: cols="<column1>,<column2>". Separe vários nomes de coluna com vírgulas (,).

  • Para tipos object, os nomes das colunas devem corresponder às chaves na resposta JSON.

  • Para tipos array, defina nomes de coluna personalizados e mapeie-os para o índice do array (base zero) usando dois pontos (:).

  • Tipo object: cols="InstanceId,Status"

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

rows

Caminho da source de dados para as linhas da tabela. Usa sintaxe JMESPath para especificar a localização dos dados na resposta JSON.

rows="Instances.Instance[]"

num

Define se uma coluna com numeração de linha será exibida.

Quando definido como true, adiciona uma coluna de numeração à esquerda da tabela. A contagem começa em 0 (não 1). Valor padrão: false.

num="true"

Exemplos

Contexto

As operações de consulta da API do Alibaba Cloud retornam dados estruturados em JSON, cuja leitura pode ser difícil.

  1. Como exemplo, considere todas as instâncias ECS e execute o seguinte comando.

    aliyun ecs DescribeInstances --biz-region-id cn-hangzhou
  2. Resposta de exemplo (parcial):

    {
      "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****"
              ]
            }
          }
        ]
      }
    }

Exemplo 1: Extrair um campo de nível raiz

  1. Execute o comando a seguir para extrair o campo RequestId. Como esse campo está no nível raiz da resposta, o parâmetro rows não é necessário.

    aliyun ecs DescribeInstances --biz-region-id cn-hangzhou --output cols=RequestId
  2. Saída de exemplo:

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

Exemplo 2: Extrair campos aninhados

  1. Execute o comando a seguir para extrair os campos InstanceId e Status. O caminho JMESPath para esses campos é Instances.Instance[], portanto defina rows como rows="Instances.Instance[]". Para mais detalhes sobre a sintaxe JMESPath, consulte o Tutorial do JMESPath.

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

    InstanceId             | Status
    ----------             | ------
    i-12345678912345678123 | Stopped
    i-abcdefghijklmnopqrst | Running
  3. Para exibir números de linha, defina num como true. Saída de exemplo:

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

Exemplo 3: Extrair elementos de um array

  1. Execute o comando a seguir para extrair elementos específicos do array SecurityGroupId. O caminho JMESPath para este array é Instances.Instance[].SecurityGroupIds.SecurityGroupId.

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

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