Použití rozhraní Azure REST API s Azure CLI

Rozhraní REST (Representational State Transfer) API jsou koncové body služby, které podporují různé sady operací HTTP (nebo metod). Tyto metody HTTP umožňují provádět různé akce pro prostředky vaší služby. Tento az rest příkaz by se měl použít jenom v případě, že není dostupný existující příkaz Azure CLI.

Po dokončení tohoto článku budete vědět, jak používat požadavky PUT, PATCH, GET, POST a DELETE HTTP ke správě prostředků služby Azure Container Registry. Azure Container Registry je spravovaná služba registru, která umožňuje vytvářet a udržovat registry kontejnerů Azure, které ukládají image kontejnerů a související artefakty.

Požadavky

Nastavte vlastní požadavek rozhraní Azure REST API:

Pokud chcete vyvolat vlastní požadavek rozhraní Azure REST API pomocí Azure CLI, použijte az rest příkaz následovaný parametrem --url . Parametr --url definuje adresu URL požadovaného prostředku a je jediným povinným parametrem.

Poznámka:

  • Příkaz az rest se automaticky ověřuje pomocí přihlašovacích údajů přihlášených. Pokud autorizační hlavička není nastavená, připojí hlavičku Authorization: Bearer <token>, kde <token> se načte z ID Microsoft Entra. Cílový prostředek tokenu bude odvozen z parametru --url , když --url parametr začíná koncovým bodem z výstupu az cloud show --query endpoints příkazu. --resource Použijte parametr pro vlastní prostředek.
  • Pokud hlavička Content-Type není nastavená a --body je platným řetězcem JSON, hlavička Content-Type se ve výchozím nastavení nastaví na application/json.

Použití PUT k vytvoření služby Azure Container Registry

Pomocí metody PUT HTTP vytvořte novou službu 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>'}}"

Tady je příklad s dokončenými parametry:

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

Výstup JSON pro Bash i 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"
}

Teď jste úspěšně vytvořili novou službu Azure Container Registry pomocí az rest!

Použití funkce PATCH k aktualizaci služby Azure Container Registry

Aktualizujte službu Azure Container Registry pomocí požadavku PATCH HTTP. --body Upravte parametr s vlastnostmi, které chcete aktualizovat. Tento příklad používá proměnné nastavené v předchozí části a aktualizuje název skladové položky ($skuName="Premium") služby 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'}}"

Následující výstup slovníku JSON obsahuje pole pro stručnost:

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

Načtení služby Azure Container Registry pomocí příkazu GET

Pomocí požadavku GET HTTP zobrazte výsledky aktualizace z požadavku PATCH. V tomto příkladu se používají proměnné nastavené v předchozí části.

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

Výstup metody GET je stejný jako výstup zobrazený pro PUT.

Použití příkazu POST k opětovnému vygenerování přihlašovacích údajů služby Azure Container Registry

Pomocí požadavku POST HTTP znovu vygenerujte jedno z přihlašovacích údajů pro službu Azure Container Registry vytvořenou v tomto článku.

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

Následující výstup slovníku JSON obsahuje pole pro stručnost:

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

Po dokončení požadavku se zadané přihlašovací údaje služby Azure Container Registry znovu vygenerují s novým heslem spolu s vaším stávajícím heslem (heslo2).

Použití delete k odstranění služby Azure Container Registry

Pomocí požadavku DELETE HTTP odstraňte existující službu 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

Vyčištění prostředků

Po dokončení práce s prostředky vytvořenými v tomto článku můžete odstranit skupinu prostředků. Když odstraníte skupinu prostředků, odstraní se všechny prostředky v této skupině prostředků.

az group delete --resource-group <resourceGroupName>