Share via


Usare l'API REST di Azure con l'interfaccia della riga di comando di Azure

Le API REST (Representational State Transfer) sono endpoint di servizio che supportano diversi set di operazioni HTTP (o metodi). Questi metodi HTTP consentono di eseguire azioni diverse per le risorse del servizio. Il az rest comando deve essere usato solo quando non è disponibile un comando dell'interfaccia della riga di comando di Azure esistente.

Al termine di questo articolo, si saprà come usare le richieste HTTP PUT, PATCH, GET, POST e DELETE per gestire le risorse Registro Azure Container. Il Registro Azure Container è un servizio del Registro di sistema gestito che consente di creare e gestire registri contenitori di Azure che archivia le immagini del contenitore e gli artefatti correlati.

Prerequisiti

Configurare la richiesta dell'API REST di Azure personalizzata:

Per richiamare una richiesta dell'API REST di Azure personalizzata con l'interfaccia della riga di comando di Azure, usare il az rest comando , seguito dal --url parametro . Il --url parametro definisce l'URL della risorsa richiesta ed è l'unico parametro obbligatorio.

Nota

  • Il az rest comando esegue automaticamente l'autenticazione usando le credenziali registrate. Se l'intestazione authorization non è impostata, allega l'intestazione Authorization: Bearer <token>, dove <token> viene recuperata dall'ID Microsoft Entra. La risorsa di destinazione del token verrà derivata dal --url parametro quando il --url parametro inizia con un endpoint dall'output del az cloud show --query endpoints comando. Usare il --resource parametro per una risorsa personalizzata.
  • Se l'intestazione Content-Type non è impostata ed --body è una stringa JSON valida, per impostazione predefinita l'intestazione Content-Type sarà "application/json".

Usare PUT per creare un Registro Azure Container

Usare il metodo HTTP PUT per creare una nuova Registro Azure Container.

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

Ecco un esempio con i parametri completati:

# 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 per Bash e 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"
}

Il nuovo Registro Azure Container è stato creato correttamente usando az rest!

Usare PATCH per aggiornare il Registro Azure Container

Aggiornare il Registro Azure Container usando la richiesta HTTP PATCH. Modificare il --body parametro con le proprietà da aggiornare. Questo esempio usa le variabili impostate nella sezione precedente e aggiorna il nome dello SKU ($skuName="Premium") del Registro Azure Container.

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

L'output del dizionario JSON seguente contiene campi omessi per brevità:

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

Usare GET per recuperare i Registro Azure Container

Usare la richiesta HTTP GET per visualizzare i risultati dell'aggiornamento dalla richiesta PATCH. In questo esempio vengono usate le variabili impostate nella sezione precedente.

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

L'output per il metodo GET è uguale a quello mostrato per PUT.

Usare POST per rigenerare le credenziali di Registro Azure Container

Usare la richiesta HTTP POST per rigenerare una delle credenziali di accesso per il Registro Azure Container creato in questo articolo.

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

L'output del dizionario JSON seguente contiene campi omessi per brevità:

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

Al termine della richiesta, le credenziali specificate Registro Azure Container verranno rigenerate con una nuova password insieme alla password esistente (password2).

Usare DELETE per eliminare il Registro Azure Container

Usare la richiesta HTTP DELETE per eliminare un Registro Azure Container esistente.

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

Pulire le risorse

Al termine delle risorse create in questo articolo, è possibile eliminare il gruppo di risorse. Quando si elimina il gruppo di risorse, tutte le risorse in tale gruppo di risorse vengono eliminate.

az group delete --resource-group <resourceGroupName>