De Azure REST API gebruiken met Azure CLI

REST-API's (Representational State Transfer) zijn service-eindpunten die ondersteuning bieden voor verschillende sets HTTP-bewerkingen (of methoden). Met deze HTTP-methoden kunt u verschillende acties uitvoeren voor de resources van uw service. De az rest opdracht mag alleen worden gebruikt wanneer een bestaande Azure CLI-opdracht niet beschikbaar is.

Na voltooiing van dit artikel weet u hoe u HTTP-aanvragen voor het beheren van Azure Container Registry-resources kunt gebruiken, PATCH, GET, POST en DELETE. Azure Container Registry is een beheerde registerservice waarmee u Azure-containerregisters kunt maken en onderhouden waarin containerinstallatiekopieën en gerelateerde artefacten worden opgeslagen.

Vereisten

Stel uw aangepaste Azure REST API-aanvraag in:

Als u een aangepaste Azure REST API-aanvraag wilt aanroepen met Azure CLI, gebruikt u de az rest opdracht, gevolgd door de --url parameter. De --url parameter definieert de URL van de aangevraagde resource en is de enige vereiste parameter.

Notitie

  • De az rest opdracht wordt automatisch geverifieerd met behulp van de aanmeldingsreferentie. Als de autorisatie-header niet is ingesteld, wordt de header Authorization: Bearer <token>gekoppeld, waar <token> deze wordt opgehaald uit De Microsoft Entra-id. De doelresource van het token wordt afgeleid van de --url parameter wanneer de --url parameter begint met een eindpunt uit de uitvoer van de az cloud show --query endpoints opdracht. Gebruik de --resource parameter voor een aangepaste resource.
  • Als de header Content-Type niet is ingesteld en --body een geldige JSON-tekenreeks is, wordt de inhoudstype-header standaard ingesteld op 'application/json'.

PUT gebruiken om een Azure Container Registry te maken

Gebruik de PUT HTTP-methode om een nieuwe Azure Container Registry te maken.

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

Hier volgt een voorbeeld met voltooide parameters:

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

JSON-uitvoer voor zowel Bash als 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"
}

U hebt nu uw nieuwe Azure Container Registry gemaakt met behulp van az rest!

PATCH gebruiken om uw Azure Container Registry bij te werken

Werk uw Azure Container Registry bij met behulp van de PATCH HTTP-aanvraag. Bewerk de --body parameter met de eigenschappen die u wilt bijwerken. In dit voorbeeld worden de variabelen gebruikt die zijn ingesteld in de vorige sectie en wordt de SKU-naam ($skuName="Premium") van Azure Container Registry bijgewerkt.

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

De volgende JSON-woordenlijstuitvoer bevat velden die zijn weggelaten om kort te zijn:

{
  "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 gebruiken om uw Azure Container Registry op te halen

Gebruik de GET HTTP-aanvraag om de updateresultaten van de PATCH-aanvraag te bekijken. In dit voorbeeld worden de variabelen gebruikt die zijn ingesteld in de vorige sectie.

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

De uitvoer voor de GET-methode is hetzelfde als de uitvoer voor PUT.

POST gebruiken om uw Azure Container Registry-referenties opnieuw te genereren

Gebruik de POST HTTP-aanvraag om een van de aanmeldingsreferenties opnieuw te genereren voor de Azure Container Registry die in dit artikel is gemaakt.

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

De volgende JSON-woordenlijstuitvoer bevat velden die zijn weggelaten om kort te zijn:

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

Nadat de aanvraag is voltooid, worden uw opgegeven Azure Container Registry-referenties opnieuw gegenereerd met een nieuw wachtwoord, samen met uw bestaande wachtwoord (wachtwoord2).

Delete gebruiken om uw Azure Container Registry te verwijderen

Gebruik de HTTP-aanvraag DELETE om een bestaand Azure Container Registry te verwijderen.

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

Resources opschonen

Wanneer u klaar bent met de resources die in dit artikel zijn gemaakt, kunt u de resourcegroep verwijderen. Wanneer u de resourcegroep verwijdert, worden alle resources in die resourcegroep verwijderd.

az group delete --resource-group <resourceGroupName>