Azure CLI 명령의 출력 형식

Azure CLI는 JSON을 기본 출력 형식으로 사용하지만 다른 형식을 제공합니다. --output (--out또는-o) 매개 변수를 사용하여 CLI 출력의 서식을 지정합니다. 인수 값 및 출력 형식은 다음과 같습니다.

--출력 설명
json JSON 문자열입니다. 이 설정은 기본값
jsonc 색이 지정한 JSON
table 열 머리글로 키가 있는 ASCII 테이블
tsv 키가 없는 탭으로 구분된 값
yaml YAML, JSON에 대한 사람이 읽을 수 있는 대안
yamlc 색으로 구분된 YAML
none 오류 및 경고 이외의 출력 없음

Warning

API 키 및 자격 증명과 같은 비밀을 노출하지 않도록 변수에 명령 출력의 none 출력 형식을 사용하거나 저장합니다. 참고: 특정 CI/CD 환경에서는 실행된 명령의 출력을 로그에 저장할 수 있습니다. 로그 파일에 기록된 내용과 로그에 대한 액세스 권한이 있는 사용자를 확인하는 것이 좋습니다. 자세한 내용은 없음 출력 형식을 참조 하세요.

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 형식은 출력을 일반 텍스트 데이터 serialization 형식인 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 사용하여 목록 출력에 표시할 속성 및 열을 사용자 지정할 수 있습니다. 다음 예제에서는 명령에서 VM 이름 및 리소스 그룹 이름 list 만 선택하는 방법을 보여줍니다.

az vm list --query "[].{resource:resourceGroup, name:name}" --output table
Resource    Name
----------  -----------
DEMORG1     DemoVM010
DEMORG1     demovm212
DEMORG1     demovm213
RGDEMO001   KBDemo001VM
RGDEMO001   KBDemo020

참고 항목

일부 키는 기본적으로 테이블 뷰에 인쇄되지 않습니다. 이러한 항목은 id, typeetag. 출력에서 이러한 항목을 확인해야 하는 경우 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 출력 형식의 한 가지 제한 사항은 출력 순서를 보장하지 않는다는 것입니다. CLI는 응답 JSON에서 키를 사전순으로 정렬한 다음 TSV 출력을 위해 값을 인쇄하여 순서를 유지하기 위해 최선을 다합니다. Azure 서비스 응답 형식이 변경 될 수 있으므로 주문이 항상 동일하다는 보장은 없습니다.

일관된 순서를 적용하려면 매개 변수와 다중 선택 목록 형식을 사용해야 --query 합니다. CLI 명령이 단일 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

다음 예제에서는 출력을 bash의 다른 명령에 파이프하는 방법을 tsv 보여 줍니다. 쿼리는 출력을 필터링하고 순서를 강제 지정하는 데 사용되며, grep 텍스트가 "RGD"인 항목을 선택한 다음 cut , 명령에서 네 번째 필드를 선택하여 출력에 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 명령은 보호해야 하는 정보를 출력합니다. 다음은 네 가지 예입니다.

  • 암호
  • 연결 문자열
  • 비밀

Azure CLI 명령을 사용할 때 비밀 및 키를 보호하려면 다음 옵션 중 하나를 선택합니다.

옵션 장점 사용 사례
--output none 출력 형식 중요한 정보가 콘솔에 표시되지 않도록 합니다. 명령이 실패하면 오류 메시지가 계속 표시됩니다. 1. 나중에 명령 출력 을 검색할 수 있는 경우에 사용합니다.
2. 출력이 필요하지 않은 경우 사용합니다.
3. 관리 ID 또는 서비스 주체를 사용하여 Azure 리소스를 관리하는 일반적인 선택입니다.
--query 매개 변수 출력을 변수에 저장합니다. 1. 나중에 명령 출력 을 검색할 수 없는 경우에 사용합니다.
2. 스크립트에서 명령 출력 값을 사용해야 하는 경우에 사용합니다.

나중에 보안 정보 사용 none 및 검색

일부 Azure 비밀은 나중에 검색할 수 있습니다. 좋은 예는 Azure Key Vault에 저장된 비밀입니다. 이 예제에서는 옵션과 함께 --output none az keyvault secret set를 사용하여 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 명령은 다음 두 가지 방법으로 제어할 수 있는 출력을 제공합니다.

출력 컨트롤 장점 방법
전역 설정 각 참조 명령에 대한 매개 변수를 지속적으로 제공할 --output 필요가 없도록 가장 많이 사용하는 기본 출력 값을 선택합니다. az config set을 사용하여 기본 출력 형식을 지정합니다.
Command 매개 변수 명령 수준에서 출력을 지정하고 스크립트에 최대한의 유연성을 제공합니다. 각 참조 명령에 대한 콘솔 출력 및 변수 입력을 제어합니다. 참조 명령의 매개 변수를 사용하여 기본 설정을 재정의 --output 합니다.

Azure CLI의 기본 출력은 .입니다 json. 콘솔 출력 none 이 필요하지 않은 경우 기본 출력을 설정합니다.

az config set core.output=none

매개 변수를 사용하여 Azure CLI 참조 명령의 기본 출력을 --output 덮어쓸 수 있습니다. 명령 출력을 변경하고 테스트하는 명령 스크립트는 다음과 같습니다.

# 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

참고 항목