Azure CLI では、既定の出力形式として JSON が使用されますが、他の形式が提供されます。
--output
(--out
または-o
) パラメーターを使用して、CLI 出力の書式を設定します。 出力の引数の値と型は次のとおりです。
--アウトプット | 説明 |
---|---|
json |
JSON 文字列。 この設定は既定です |
jsonc |
色分けされた JSON |
table |
キーを列見出しとして使用する ASCII テーブル |
tsv |
キーのないタブ区切り値 |
yaml |
JSON に代わる人間が判読できる YAML |
yamlc |
色分けされた YAML |
none |
エラーと警告以外の出力なし |
Warnung
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 コマンド出力のクエリを実行する方法」を参照してください。
なし出力形式
一部の Azure CLI コマンドでは、保護する必要がある情報が出力されます。 4 つの例を次に示します。
- パスワード
- 接続文字列
- 秘密
- キー
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