Azure CLI コマンドの出力形式
Azure CLI では既定の出力形式として JSON が使用されますが、他の形式も用意されています。 CLI の出力を書式設定するには、--output
(--out
または -o
) パラメーターを使用します。 引数値と出力の種類は、次のとおりです。
--output | 説明 |
---|---|
json |
JSON 文字列。 この設定が既定値です |
jsonc |
色付けされた JSON |
table |
列見出しとしてキーが使用されている ASCII テーブル |
tsv |
タブ区切りの値 (キーなし) |
yaml |
YAML。JSON に代わる、人が判読できる形式 |
yamlc |
色付けされた YAML |
none |
エラーと警告以外は出力されません |
警告
API キーや資格情報などのシークレットが公開されないように、 none
の出力形式を使用するか、コマンド出力を変数に格納します。 注: 特定の CI/CD 環境では、実行されたコマンドの出力がログに保存される場合があります。 これらのログ ファイルに何が書き込まれ、誰がログにアクセスできるかを確認することをお勧めします。
詳しくは、None 出力形式に関するページをご覧ください。
JSON 出力形式 (デフォルト)
次の例では、既定の JSON 形式で、サブスクリプション内の仮想マシンの一覧が表示されます。
az vm list --output json
次の出力では、簡潔にするため、また置き換えた情報を識別するために、一部のフィールドが省略されています。
[
{
"availabilitySet": null,
"diagnosticsProfile": null,
"hardwareProfile": {
"vmSize": "Standard_DS1"
},
"id": "/subscriptions/.../resourceGroups/DEMORG1/providers/Microsoft.Compute/virtualMachines/DemoVM010",
"instanceView": null,
"licenseType": null,
"location": "westus",
"name": "DemoVM010",
"networkProfile": {
"networkInterfaces": [
{
"id": "/subscriptions/.../resourceGroups/demorg1/providers/Microsoft.Network/networkInterfaces/DemoVM010VMNic",
"primary": null,
"resourceGroup": "demorg1"
}
]
},
...
...
...
]
YAML 出力形式
yaml
形式では、出力が YAML として、つまりプレーン テキスト データのシリアル化形式として出力されます。 YAML は JSON より読みやすくなる傾向があり、その形式に簡単にマップされます。 一部のアプリケーションおよび CLI コマンドは、構成の入力として、JSON ではなく YAML を受け取ります。
az vm list --output yaml
次の出力では、簡潔にするため、また置き換えた情報を識別するために、一部のフィールドが省略されています。
- availabilitySet: null
diagnosticsProfile: null
hardwareProfile:
vmSize: Standard_DS1_v2
id: /subscriptions/.../resourceGroups/DEMORG1/providers/Microsoft.Compute/virtualMachines/DemoVM010
identity: null
instanceView: null
licenseType: null
location: westus
name: ExampleVM1
networkProfile:
networkInterfaces:
- id: /subscriptions/.../resourceGroups/DemoRG1/providers/Microsoft.Network/networkInterfaces/DemoVM010Nic
primary: null
resourceGroup: DemoRG1
...
...
テーブル出力形式
table
形式では出力が ASCII テーブルとして生成されるため、読み取りやスキャンが容易になります。 入れ子になったオブジェクトはテーブル出力には含まれませんが、クエリの一部としてフィルター処理することもできます。 この形式では一部のフィールドがテーブルに含まれないため、人の目ですばやく検索できるデータ概要が必要な場合に最適です。
az vm list --output table
Name ResourceGroup Location
----------- --------------- ----------
DemoVM010 DEMORG1 westus
demovm212 DEMORG1 westus
demovm213 DEMORG1 westus
KBDemo001VM RGDEMO001 westus
KBDemo020 RGDEMO001 westus
--query
パラメーターを使用すると、一覧の出力に表示するプロパティと列をカスタマイズすることができます。 次の例は、list
コマンドで VM 名とリソース グループ名だけを選択する方法を示しています。
az vm list --query "[].{resource:resourceGroup, name:name}" --output table
Resource Name
---------- -----------
DEMORG1 DemoVM010
DEMORG1 demovm212
DEMORG1 demovm213
RGDEMO001 KBDemo001VM
RGDEMO001 KBDemo020
注意
一部のキーは、既定でテーブル ビューには出力されません。 id
、type
、および etag
が、これに相当します。 出力でこれらを表示する必要がある場合は、JMESPath キー更新機能を使用してキー名を変更し、フィルター処理を回避します。
az vm list --query "[].{objectID:id}" --output table
クエリを使用してデータをフィルター処理する方法の詳細については、「Azure CLI で JMESPath クエリを使用する」を参照してください。
TSV 出力形式
tsv
出力形式では、追加の書式設定、キー、またはその他の記号はなしで、タブと改行で区切られた値が返されます。 この形式を使用すると、なんらかの形式でテキストを処理する必要がある他のコマンドやツールで出力を簡単に利用できるようになります。 table
形式と同じく、tsv
では、入れ子になったオブジェクトは出力されません。
前の例で tsv
オプションを使用すると、タブ区切りの結果が出力されます。
az vm list --output tsv
None None /subscriptions/.../resourceGroups/DEMORG1/providers/Microsoft.Compute/virtualMachines/DemoVM010 None None westus DemoVM010 None Succeeded DEMORG1 None Microsoft.Compute/virtualMachines cbd56d9b-9340-44bc-a722-25f15b578444
None None /subscriptions/.../resourceGroups/DEMORG1/providers/Microsoft.Compute/virtualMachines/demovm212 None None westus demovm212 None Succeeded DEMORG1 None Microsoft.Compute/virtualMachines 4bdac85d-c2f7-410f-9907-ca7921d930b4
None None /subscriptions/.../resourceGroups/DEMORG1/providers/Microsoft.Compute/virtualMachines/demovm213 None None westus demovm213 None Succeeded DEMORG1 None Microsoft.Compute/virtualMachines 2131c664-221a-4b7f-9653-f6d542fbfa34
None None /subscriptions/.../resourceGroups/RGDEMO001/providers/Microsoft.Compute/virtualMachines/KBDemo001VM None None westus KBDemo001VM None Succeeded RGDEMO001 None Microsoft.Compute/virtualMachines 14e74761-c17e-4530-a7be-9e4ff06ea74b
None None /subscriptions/.../resourceGroups/RGDEMO001/providers/Microsoft.Compute/virtualMachines/KBDemo020 None None westus KBDemo020 None Succeeded RGDEMO001 None Microsoft.Compute/virtualMachines 36baa9-9b80-48a8-b4a9-854c7a858ece
TSV 出力形式の制限の 1 つは、出力順序が保証されないことです。 CLI では、順序を最大限維持するために、応答 JSON 内のキーをアルファベット順に並べ替え、次にそれらの値を TSV 出力用の順序で表示します。 これは、順序が常に同じであることを保証するものではありません。Azure サービスの応答形式が変更される可能性があるためです。
一貫した順序を強制するには、--query
パラメーターと複数選択リストの形式を使用する必要があります。 CLI コマンドが 1 つの JSON 辞書を返す場合は、一般的な形式 ([key1, key2, ..., keyN]
) を使用してキーの順序を強制します。 配列を返す CLI コマンドの場合、一般的な形式 ([].[key1, key2, ..., keyN]
) を使用して列の値を並べ替えます。
たとえば、上に表示されている情報を ID、場所、リソース グループ、VM 名で並べ替えるには、次のようにします。
az vm list --output tsv --query '[].[id, location, resourceGroup, name]'
/subscriptions/.../resourceGroups/DEMORG1/providers/Microsoft.Compute/virtualMachines/DemoVM010 westus DEMORG1 DemoVM010
/subscriptions/.../resourceGroups/DEMORG1/providers/Microsoft.Compute/virtualMachines/demovm212 westus DEMORG1 demovm212
/subscriptions/.../resourceGroups/DEMORG1/providers/Microsoft.Compute/virtualMachines/demovm213 westus DEMORG1 demovm213
/subscriptions/.../resourceGroups/RGDEMO001/providers/Microsoft.Compute/virtualMachines/KBDemo001VM westus RGDEMO001 KBDemo001VM
/subscriptions/.../resourceGroups/RGDEMO001/providers/Microsoft.Compute/virtualMachines/KBDemo020 westus RGDEMO001 KBDemo020
次の例は、tsv
の出力を Bash の他のコマンドにパイプ処理する方法を示しています。 このクエリを使用して出力をフィルターにかけて順序を強制し、grep
によって "RGD" というテキストが含まれている項目を選択し、cut
コマンドによって 4 番目のフィールドの値を選択して VM の名前を出力に表示します。
az vm list --output tsv --query '[].[id, location, resourceGroup, name]' | grep RGD | cut -f4
KBDemo001VM
KBDemo020
tsv
出力形式は、変数に値を割り当てるときによく使用されます。 この例では、アクティブなサブスクリプション ID を取得し、スクリプトで使用するために変数に格納します。
# Bash Script
subscriptionID=$(az account show --query id --output tsv)
echo "Using subscription ID $subscriptionID"
--query
パラメーターの詳細については、「Azure CLI コマンドの出力に対してクエリを実行する方法」を参照してください。
None 出力形式
一部の Azure CLI コマンドでは、保護する必要がある情報が出力されます。 以下に 4 つの例を示します。
- パスワード
- 接続文字列
- secrets
- キー
Azure CLI コマンドを使用するときにシークレットとキーを保護するには、次のいずれかのオプションを選択します。
オプション | 特長 | 使用例 |
---|---|---|
--output none 出力形式 |
機密情報がコンソールに表示されないようにします。 コマンドが失敗しても、エラー メッセージが表示されます。 | 1.コマンド出力 を後で 取得できる場合に使用します。 |
2.出力が不要な場合に使用します。 | ||
3.マネージド ID またはサービス プリンシパルを使用して Azure リソースを管理する場合の一般的な選択肢です。 | ||
--query パラメーター |
出力を変数に格納します。 | 1.コマンド出力 を後で 取得できない場合に使用します。 |
2.スクリプトでコマンド出力値を使用する必要がある場合に使用します。 |
none
を使用して後でセキュリティ情報を取得する
一部の Azure シークレットは、後で取得できます。 良い例は、Azure Key Vault に格納されているシークレットです。 この例では、az keyvault secret set を --output none
オプションと使用して、Azure Key Vault シークレットを作成します。 シークレットは、後で az keyvault secret show コマンドを使用して取得できます。
az keyvault secret set --name MySecretName \
--vault-name MyKeyVaultName \
--value MySecretValue\
--output none
--query
を使用して変数にセキュリティ情報を返す
--query
を使用して出力を変数に格納することは、技術的には出力形式ではありません。 これはシークレットを保護するためのソリューションであり、 --output none
を使用する代わりに使用できます。 たとえば、サービス プリンシパルの資格情報をリセットすると、パスワードを再度取得することはできません。
既定の json 形式で出力を返すサービス プリンシパル資格情報をリセットします。
# reset service principal credentials using default output format (json).
az ad sp credential reset --id myServicePrincipalID --output json
コンソールの新しいパスワードを示すコンソール出力。
{
"appId": "myServicePrincipalID",
"password": "myServicePrincipalNewPassword",
"tenant": "myTenantID"
}
より適切な解決策は、変数に機密情報を返すことです。
# Bash Script
# reset service principal credentials returning results to a variable
myNewPassword=$(az ad sp credential reset --id myServicePrincipalID --query password --output tsv)
# Display the new password (remove this line in production for security)
echo "New password: $myNewPassword"
出力を変数に格納する例については、「 Azure CLI を正常に使用する - 別のコマンドに値を渡す」を参照してください。 --query
パラメーター構文の詳細については、「Azure CLI コマンドの出力に対してクエリを実行する方法」を参照してください。
既定の出力形式を設定する
Azure CLI コマンドは、次の 2 つの方法で制御できる出力を提供します。
出力制御 | 特長 | 操作方法 |
---|---|---|
グローバル設定 | 参照コマンドごとに --output パラメーターを継続的に指定する必要がないように、最も多く使用する既定の出力値を選択します。 |
az config set を使用して出力形式を指定します。 |
Command パラメーター | コマンド レベルで出力を指定し、スクリプトの柔軟性を最大限に高めます。 各参照コマンドのコンソール出力および変数入力を制御します。 | 参照コマンドの --output パラメーターを使用して、既定の設定をオーバーライドします。 |
Azure CLI の既定の出力は json
です。 コンソール出力が必要ない場合は、既定の出力を none
に設定します。
az config set core.output=none
--output
パラメーターを使用して、任意の Azure CLI 参照コマンドの既定の出力を上書きできます。 コマンド出力を変更してテストするコマンドのスクリプトを次に示します。
# set your default output to table
az config set core.output=table
# show your active subscription in table format
# notice how only a subset of properties are returned in the table
az account show
# override your table default and show your active subscription in jsonc format
az account show --output jsonc
# reset your default output to json
az config set core.output=json
関連項目
Azure CLI