Menggunakan Azure REST API dengan Azure CLI

API Transfer Status Representasional (REST) adalah titik akhir layanan yang mendukung serangkaian operasi HTTP (atau metode) yang berbeda. Metode HTTP ini memungkinkan Anda melakukan tindakan yang berbeda untuk sumber daya layanan Anda. az rest Perintah hanya boleh digunakan saat perintah Azure CLI yang ada tidak tersedia.

Setelah menyelesaikan artikel ini, Anda akan tahu cara menggunakan permintaan HTTP PUT, PATCH, GET, POST, dan DELETE untuk mengelola sumber daya Azure Container Registry. Azure Container Registry adalah layanan registri terkelola yang memungkinkan Anda membuat dan memelihara registri kontainer Azure yang menyimpan gambar kontainer dan artefak terkait.

Prasyarat

Siapkan permintaan Azure REST API kustom Anda:

Untuk memanggil permintaan Azure REST API kustom dengan Azure CLI, gunakan az rest perintah , diikuti oleh --url parameter . Parameter --url menentukan URL sumber daya yang diminta, dan merupakan satu-satunya parameter yang diperlukan.

Catatan

  • Perintah az rest secara otomatis mengautentikasi menggunakan kredensial yang masuk. Jika header Otorisasi tidak diatur, header melampirkan header Authorization: Bearer <token>, tempat <token> diambil dari ID Microsoft Entra. Sumber daya target token akan berasal dari --url parameter ketika --url parameter dimulai dengan titik akhir dari output az cloud show --query endpoints perintah. --resource Gunakan parameter untuk sumber daya kustom.
  • Jika header Content-Type tidak diatur dan --body merupakan string JSON yang valid, header Content-Type akan default ke "application/json".

Menggunakan PUT untuk membuat Azure Container Registry

Gunakan metode PUT HTTP untuk membuat Azure Container Registry baru.

# 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>'}}"

Berikut adalah contoh dengan parameter lengkap:

# 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'}}"

Output JSON untuk Bash dan Powershell:

{
  "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"
}

Anda sekarang telah berhasil membuat Azure Container Registry baru Anda menggunakan az rest!

Menggunakan PATCH untuk memperbarui Azure Container Registry Anda

Perbarui Azure Container Registry Anda dengan menggunakan permintaan HTTP PATCH. --body Edit parameter dengan properti yang ingin Anda perbarui. Contoh ini menggunakan variabel yang ditetapkan di bagian sebelumnya, dan memperbarui nama SKU ($skuName="Premium") dari Azure Container Registry.

#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'}}"

Output kamus JSON berikut memiliki bidang yang dihilangkan untuk brevity:

{
  "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"
}

Menggunakan GET untuk mengambil Azure Container Registry Anda

Gunakan permintaan HTTP GET lihat hasil pembaruan dari permintaan PATCH. Contoh ini menggunakan variabel yang ditetapkan di bagian sebelumnya.

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

Output untuk metode GET sama dengan yang ditunjukkan untuk PUT.

Menggunakan POST untuk meregenerasi kredensial Azure Container Registry Anda

Gunakan permintaan HTTP POST untuk meregenerasi salah satu kredensial masuk untuk Azure Container Registry yang dibuat dalam artikel ini.

# 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'}"

Output kamus JSON berikut memiliki bidang yang dihilangkan untuk brevity:

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

Setelah permintaan selesai, kredensial Azure Container Registry yang Anda tentukan akan diregenerasi dengan kata sandi baru bersama dengan kata sandi yang ada (kata sandi2).

Menggunakan DELETE untuk menghapus Azure Container Registry Anda

Gunakan permintaan HAPUS HTTP untuk menghapus Azure Container Registry yang sudah ada.

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

Membersihkan sumber daya

Setelah selesai dengan sumber daya yang dibuat dalam artikel ini, Anda dapat menghapus grup sumber daya. Saat Anda menghapus grup sumber daya, semua sumber daya dalam grup sumber daya tersebut akan dihapus.

az group delete --resource-group <resourceGroupName>