Azure CLI에서 Azure REST API 사용

REST(표현 상태 전송) API 는 다양한 HTTP 작업(또는 메서드) 집합을 지원하는 서비스 엔드포인트입니다. 이러한 HTTP 메서드를 사용하면 서비스의 리소스에 대해 다른 작업을 수행할 수 있습니다. 이 az rest 명령은 기존 Azure CLI 명령을 사용할 수 없는 경우에만 사용해야 합니다.

이 문서가 완료되면 PUT, PATCH, GET, POST 및 DELETE HTTP 요청을 사용하여 Azure Container Registry 리소스를 관리하는 방법을 알게 됩니다. Azure Container Registry는 컨테이너 이미지 및 관련 아티팩트를 저장하는 Azure 컨테이너 레지스트리를 만들고 기본 수 있는 관리되는 레지스트리 서비스입니다.

필수 조건

사용자 지정 Azure REST API 요청을 설정합니다.

Azure CLI를 사용하여 사용자 지정 Azure REST API 요청을 호출하려면 명령과 매개 변수를 --url 사용합니다az rest. 매개 변수는 --url 요청된 리소스의 URL을 정의하며 유일한 필수 매개 변수입니다.

참고 항목

  • az rest 명령은 로그인한 자격 증명을 사용하여 자동으로 인증합니다. 권한 부여 헤더가 설정되지 않은 경우 Microsoft Entra ID에서 검색되는 헤더 Authorization: Bearer <token><token> 를 연결합니다. 명령의 출력에서 --url 엔드포인트로 매개 변수가 --url 시작될 때 토큰의 az cloud show --query endpoints 대상 리소스가 매개 변수에서 파생됩니다. 사용자 지정 리소스에 --resource 대한 매개 변수를 사용합니다.
  • Content-Type 헤더가 설정 --body 되지 않고 유효한 JSON 문자열인 경우 Content-Type 헤더는 기본적으로 "application/json"으로 설정됩니다.

PUT을 사용하여 Azure Container Registry 만들기

PUT HTTP 메서드를 사용하여 새 Azure Container Registry를 만듭니다.

# Command format example
az rest --method put \
    --url https://management.azure.com/subscriptions/<subscriptionId>/resourceGroups/<resourceGroup>/providers/Microsoft.ContainerRegistry/registries/<containerRegistryName>?api-version=2023-01-01-preview \
    --body "{'location': '<locationName>', 'sku': {'name': '<skuName>'}, 'properties': {'adminUserEnabled': '<propertyValue>'}}"

다음은 완료된 매개 변수를 사용하는 예제입니다.

# Variable block
let "randomIdentifier=$RANDOM*$RANDOM"
subscriptionId="00000000-0000-0000-0000-000000000000"
resourceGroup="msdocs-app-rg$randomIdentifier"
containerRegistryName="msdocscr$randomIdentifier"
locationName="westus"
skuName="Standard"
propertyValue="true"

# Create resource group
az group create --name $resourceGroup --location $locationName --output json

# Invoke request
az rest --method put \
    --url https://management.azure.com/subscriptions/$subscriptionId/resourceGroups/$resourceGroup/providers/Microsoft.ContainerRegistry/registries/$containerRegistryName?api-version=2023-01-01-preview \
    --body "{'location': '$locationName', 'sku': {'name': '$skuName'}, 'properties': {'adminUserEnabled': '$propertyValue'}}"

Bash 및 Powershell 모두에 대한 JSON 출력:

{
  "id": "/subscriptions/<subscriptionId>/resourceGroups/<resourceGroup>/providers/Microsoft.ContainerRegistry/registries/<containerRegistryName>",
  "location": "<location>",
  "name": "<containerRegistryName>",
  "properties": {
    "adminUserEnabled": true,
    "anonymousPullEnabled": false,
    "creationDate": "2024-01-03T18:38:36.7089583Z",
    "dataEndpointEnabled": false,
    "dataEndpointHostNames": [],
    "encryption": {
      "status": "disabled"
    },
    "loginServer": "<containerRegistryName>.azurecr.io",
    "networkRuleBypassOptions": "AzureServices",
    "policies": {
      "azureADAuthenticationAsArmPolicy": {
        "status": "enabled"
      },
      "exportPolicy": {
        "status": "enabled"
      },
      "quarantinePolicy": {
        "status": "disabled"
      },
      "retentionPolicy": {
        "days": 7,
        "lastUpdatedTime": "2024-01-03T19:44:53.9770581+00:00",
        "status": "disabled"
      },
      "softDeletePolicy": {
        "lastUpdatedTime": "2024-01-03T19:44:53.9771117+00:00",
        "retentionDays": 7,
        "status": "disabled"
      },
      "trustPolicy": {
        "status": "disabled",
        "type": "Notary"
      }
    },
    "privateEndpointConnections": [],
    "provisioningState": "Succeeded",
    "publicNetworkAccess": "Enabled",
    "zoneRedundancy": "Disabled"
  },
  "sku": {
    "name": "Standard",
    "tier": "Standard"
  },
  "systemData": {
    "createdAt": "2024-01-03T18:38:36.7089583+00:00",
    "createdBy": "<username>@microsoft.com",
    "createdByType": "User",
    "lastModifiedAt": "2024-01-03T19:44:53.684342+00:00",
    "lastModifiedBy": "<username>@microsoft.com",
    "lastModifiedByType": "User"
  },
  "tags":{},
  "type": "Microsoft.ContainerRegistry/registries"
}

이제 !을 사용하여 az rest새 Azure Container Registry를 성공적으로 만들었습니다.

PATCH를 사용하여 Azure Container Registry 업데이트

PATCH HTTP 요청을 사용하여 Azure Container Registry를 업데이트합니다. --body 업데이트하려는 속성을 사용하여 매개 변수를 편집합니다. 이 예제에서는 이전 섹션에 설정된 변수를 사용하고 Azure Container Registry의 SKU 이름($skuName="프리미엄")을 업데이트합니다.

#Variable Block
$skuName="Premium"

az rest --method patch \
    --url https://management.azure.com/subscriptions/$subscriptionId/resourceGroups/$resourceGroup/providers/Microsoft.ContainerRegistry/registries/$containerRegistryName?api-version=2023-01-01-preview \
    --body "{'location': '$locationName', 'sku': {'name': '$skuName'}, 'properties': {'adminUserEnabled': '$propertyValue'}}"

다음 JSON 사전 출력에는 간결성을 위해 생략된 필드가 있습니다.

{
  "id": "/subscriptions/<subscriptionId>/resourceGroups/<resourceGroup>/providers/Microsoft.ContainerRegistry/registries/<containerRegistryName>",
  "location": "westus",
  "name": "<containerRegistryName>",
  "properties": {...},
  "sku": {
    "name": "Premium",
    "tier": "Premium"
  },
  "systemData": {...},
  "type": "Microsoft.ContainerRegistry/registries"
}

GET을 사용하여 Azure Container Registry 검색

GET HTTP 요청을 사용하여 PATCH 요청의 업데이트 결과를 확인합니다. 이 예제에서는 이전 섹션에서 설정한 변수를 사용합니다.

az rest --method get \
    --url https://management.azure.com/subscriptions/$subscriptionId/resourceGroups/$resourceGroup/providers/Microsoft.ContainerRegistry/registries/$containerRegistryName?api-version=2023-01-01-preview 

GET 메서드의 출력은 PUT에 표시된 출력과 동일합니다.

POST를 사용하여 Azure Container Registry 자격 증명 다시 생성

POST HTTP 요청을 사용하여 이 문서에서 만든 Azure Container Registry에 대한 로그인 자격 증명 중 하나를 다시 생성합니다.

# Variable block
$passwordValue="password"

az rest --method post \
    --url https://management.azure.com/subscriptions/$subscriptionId/resourceGroups/$resourceGroup/providers/Microsoft.ContainerRegistry/registries/$containerRegistryName/regenerateCredential?api-version=2023-01-01-preview \
    --body "{'name': '$passwordValue'}"

다음 JSON 사전 출력에는 간결성을 위해 생략된 필드가 있습니다.

{
  "passwords": [
    {
      "name": "password",
      "value": "<passwordValue>"
    },
    {
      "name": "password2",
      "value": "<passwordValue2>"
    }
  ],
  "username": "<containerRegistryName>"
}

요청이 완료되면 지정된 Azure Container Registry 자격 증명이 기존 암호(암호2)와 함께 새 암호로 다시 생성됩니다.

DELETE를 사용하여 Azure Container Registry 삭제

DELETE HTTP 요청을 사용하여 기존 Azure Container Registry를 삭제합니다.

az rest --method delete \
    --url https://management.azure.com/subscriptions/$subscriptionId/resourceGroups/$resourceGroup/providers/Microsoft.ContainerRegistry/registries/$containerRegistryName?api-version=2023-01-01-preview

리소스 정리

이 문서에서 만든 리소스를 완료하면 리소스 그룹을 삭제할 수 있습니다. 리소스 그룹을 삭제하면 해당 리소스 그룹의 모든 리소스가 삭제됩니다.

az group delete --resource-group <resourceGroupName>