次の方法で共有


Azure CLI コマンドの出力形式

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

一部のキーは、既定ではテーブル ビューに出力されません。 これらは、 idtype、および 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

こちらも参照ください