Perintah Alibaba Cloud CLI mengembalikan hasil dalam format JSON. Anda dapat menggunakan opsi --cli-query untuk mengekstrak bidang tertentu dengan ekspresi JMESPath (output tetap dalam format JSON), atau menggunakan opsi --output untuk menampilkan hasil sebagai tabel. Kedua opsi ini juga dapat digabungkan: filter terlebih dahulu, lalu tampilkan dalam bentuk tabel.
Sebelum menjalankan perintah dalam topik ini, pastikan Alibaba Cloud CLI telah diinstal dan dikonfigurasi. Untuk informasi selengkapnya, lihat Install, update, and uninstall Alibaba Cloud CLI dan Configure and manage credentials.
Filter output JSON dengan --cli-query
Opsi --cli-query menerima ekspresi JMESPath dan menerapkannya pada respons API. Hasil yang telah difilter tetap dalam format JSON, sehingga skrip dan alat downstream seperti jq dapat memprosesnya secara langsung.
Sintaks:
aliyun <product> <operation> --cli-query "<JMESPath expression>"
Contoh berikut menggunakan respons ECS DescribeInstances untuk menunjukkan pola pemfilteran umum.
Contoh 1: Ekstrak daftar nilai
Ekstrak semua ID instans.
aliyun ecs DescribeInstances --biz-region-id cn-hangzhou --cli-query "Instances.Instance[].InstanceId"
Contoh output:
[
"i-1234567891234567****",
"i-abcdefghijklmnop****"
]
Contoh 2: Ekstrak beberapa bidang
Ekstrak InstanceId dan Status dari setiap instans.
aliyun ecs DescribeInstances --biz-region-id cn-hangzhou --cli-query "Instances.Instance[].[InstanceId,Status]"
Contoh output:
[
[
"i-1234567891234567****",
"Stopped"
],
[
"i-abcdefghijklmnop****",
"Running"
]
]
Contoh 3: Filter berdasarkan kondisi
Ekstrak hanya ID instans yang sedang berjalan.
aliyun ecs DescribeInstances --biz-region-id cn-hangzhou --cli-query "Instances.Instance[?Status=='Running'].InstanceId"
Contoh output:
[
"i-abcdefghijklmnop****"
]
Contoh 4: Ubah struktur output
Gunakan ekspresi multiselect hash JMESPath untuk mengubah struktur respons menjadi array objek dengan nama kunci kustom.
aliyun ecs DescribeInstances --biz-region-id cn-hangzhou --cli-query "Instances.Instance[].{id:InstanceId,status:Status}"
Contoh output:
[
{
"id": "i-1234567891234567****",
"status": "Stopped"
},
{
"id": "i-abcdefghijklmnop****",
"status": "Running"
}
]
Contoh-contoh di atas hanya mencakup sintaks umum. JMESPath juga mendukung ekspresi pipa, fungsi bawaan, dan fitur lanjutan lainnya. Untuk sintaks lengkap, lihat JMESPath Tutorial.
Jika --cli-query mengembalikan null, pastikan nama bidang dalam ekspresi Anda persis sesuai dengan kunci dalam respons API (nama bidang bersifat case-sensitive).
Pilih opsi yang tepat
Gunakan tabel berikut untuk menentukan opsi yang sesuai dengan skenario Anda:
|
Skenario |
Opsi |
Deskripsi |
|
Ekstrak nilai dalam skrip |
|
Output berupa JSON, yang dapat diproses langsung oleh alat seperti |
|
Jelajahi hasil di terminal |
|
Tabel lebih mudah dibaca daripada JSON mentah. |
|
Filter dan tampilkan sebagai tabel |
Keduanya |
|
Parameter opsi --output
Alibaba Cloud CLI menyediakan opsi --output untuk mengekstrak bidang tertentu dari respons dan menampilkannya sebagai tabel.
Opsi --output mendukung parameter berikut:
|
Parameter |
Deskripsi |
Contoh |
|
cols |
Kolom yang akan ditampilkan dalam tabel. Format:
|
|
|
rows |
Jalur sumber data untuk baris tabel. Menggunakan sintaks JMESPath untuk menentukan lokasi data dalam respons JSON. |
rows="Instances.Instance[]" |
|
num |
Menentukan apakah akan menampilkan kolom nomor baris. Jika diatur ke |
num="true" |
Contoh
Latar Belakang
Operasi kueri API Alibaba Cloud mengembalikan data terstruktur dalam format JSON, yang bisa sulit dibaca.
-
Mengambil semua instans ECS sebagai contoh, jalankan perintah berikut.
aliyun ecs DescribeInstances --biz-region-id cn-hangzhou -
Contoh respons (sebagian):
{ "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****" ] } } ] } }
Contoh 1: Ekstrak bidang tingkat root
-
Jalankan perintah berikut untuk mengekstrak bidang
RequestId. Karena bidang ini berada di tingkat root respons, Anda tidak memerlukan parameterrows.aliyun ecs DescribeInstances --biz-region-id cn-hangzhou --output cols=RequestId -
Contoh output:
RequestId --------- 2B76ECBD-A296-407E-BE17-7E668A609DDA
Contoh 2: Ekstrak bidang bersarang
-
Jalankan perintah berikut untuk mengekstrak bidang
InstanceIddanStatus. Jalur JMESPath untuk bidang-bidang ini adalahInstances.Instance[], jadi aturrowsmenjadirows="Instances.Instance[]". Untuk informasi lebih lanjut tentang sintaks JMESPath, lihat JMESPath Tutorial.aliyun ecs DescribeInstances --biz-region-id cn-hangzhou --output cols="InstanceId,Status" rows="Instances.Instance[]" -
Contoh output:
InstanceId | Status ---------- | ------ i-12345678912345678123 | Stopped i-abcdefghijklmnopqrst | Running -
Untuk menampilkan nomor baris, atur
numketrue. Contoh output:Num | InstanceId | Status --- | ---------- | ------ 0 | i-12345678912345678123 | Stopped 1 | i-abcdefghijklmnopqrst | Running
Contoh 3: Ekstrak elemen dari array
-
Jalankan perintah berikut untuk mengekstrak elemen tertentu dari array
SecurityGroupId. Jalur JMESPath untuk array ini adalahInstances.Instance[].SecurityGroupIds.SecurityGroupId.aliyun ecs DescribeInstances --biz-region-id cn-hangzhou --output cols="sg1:0,sg2:1" rows="Instances.Instance[].SecurityGroupIds.SecurityGroupId" -
Contoh output:
sg1 | sg2 --- | --- sg-bp12345678912345**** | sg-bp98765432198765**** sg-bp1abcdefghijklm**** | sg-bp1zyxwvutsrqpon****