Alibaba Cloud API 操作は JSON 形式で応答を返しますが、これは読みにくい場合があります。このトピックでは、Alibaba Cloud CLI の高度なフィルター機能を使用して JSON 応答から特定のフィールドを抽出し、テーブルに表示する方法について説明します。
--output オプションの説明
Alibaba Cloud CLI は、応答から特定のフィールドを抽出して視覚化するのに役立つ --output オプションを提供します。デフォルトでは、出力はテーブルとして表示されます。
--output オプションには、次のパラメーターが含まれています:
パラメーター | 説明 | 例 |
cols | テーブルの列名。複数の列名はコンマ (,) で区切ります。 フォーマット:
| たとえば、 |
rows |
JSON 応答からテーブルの行のデータソースをクエリするために使用される JMESPath 式。 | rows="Instances.Instance[]" |
num | 行番号の列を表示するかどうかを指定します。 有効な値: デフォルト値: 番号付けは | num="true" |
例
バックグラウンド
次の例では、API 操作の JSON 応答から特定のフィールドを抽出する方法を示します。
次のコマンドを実行して、すべての ECS インスタンスに関する情報をクエリします。
aliyun ecs DescribeInstancesレスポンス例:
{ "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****" ] } } ] } }
例 1
次のコマンドを実行して、前の応答から
RequestIdパラメーターを抽出します。このパラメーターはルートレベルの要素であるため、rowsパラメーターを指定する必要はありません。aliyun ecs DescribeInstances --output cols=RequestId出力例:
RequestId --------- 2B76ECBD-A296-407E-BE17-7E668A609DDA
例 2
次のコマンドを実行して、前の応答から
InstanceIdおよびStatusパラメーターを抽出します。rows パラメーターをInstances.Instance[]に設定します。これは、これらのパラメーターを含む配列の JMESPath 式です。JMESPath 式の詳細については、「JMESPath チュートリアル」をご参照ください。aliyun ecs DescribeInstances --output cols="InstanceId,Status" rows="Instances.Instance[]"出力例:
InstanceId | Status ---------- | ------ i-12345678912345678123 | Stopped i-abcdefghijklmnopqrst | Running行番号の列を表示するには、num パラメーターを
trueに設定します。出力例:Num | InstanceId | Status --- | ---------- | ------ 0 | i-12345678912345678123 | Stopped 1 | i-abcdefghijklmnopqrst | Running
例 3
次のコマンドを実行して、
SecurityGroupId配列から特定の要素を抽出します。この配列の JMESPath 式はInstances.Instance[].SecurityGroupIds.SecurityGroupIdです。aliyun ecs DescribeInstances --output cols="sg1:0,sg2:1" rows="Instances.Instance[].SecurityGroupIds.SecurityGroupId"出力例:
sg1 | sg2 --- | --- sg-bp11234567891234**** | sg-bp19876543219876**** sg-bp1abcdefghijklm**** | sg-bp1zyxwvutsrqpon****