Condividi tramite


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 Azure CLI esistente.

Questo articolo illustra le richieste HTTP PUT, PATCH, GET, POST e DELETE per gestire le risorse del Registro Azure Container. Registro Azure Container è un servizio di registro gestito che consente di creare e gestire registri contenitori di Azure che archivia le immagini del contenitore e gli artefatti correlati.

Prerequisiti

Suggerimenti per l'uso az rest

Ecco alcune informazioni utili quando si usa az rest:

  • 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 recuperato dall'ID Microsoft Entra.
  • La risorsa di destinazione del token verrà derivata dal parametro --url quando il parametro --url inizia con un endpoint dall'output del comando az cloud show --query endpoints. Parametro --url obbligatorio.
  • 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".
  • Quando si utilizza --uri-parameters per le richieste in formato OData, assicurarsi di utilizzare correttamente la sequenza di escape $ in diversi ambienti: in Bash, utilizzare $ per scappare \$, e in PowerShell, utilizzare $ per scappare `$.

Usare PUT per creare un Registro Azure Container

Usare il metodo HTTP PUT per creare un nuovo 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"
}

Usare PATCH per aggiornare il Registro Azure Container

Aggiorna il Registro di Container di Azure 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 il 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 del 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 di Registro Azure Container specificate verranno rigenerate con una nuova password insieme alla password esistente (password2).

Usare DELETE per eliminare 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

Esempio aggiuntivo az rest per Microsoft Graph

A volte è utile visualizzare un esempio per uno scenario diverso, quindi di seguito è riportato un esempio che usa l'API Microsoft Graph. Per aggiornare gli URI di reindirizzamento per un'applicazione, chiamare l'API REST dell'applicazione Di aggiornamento , come nel codice seguente:

# Get the application
az rest --method GET \
    --uri 'https://graph.microsoft.com/v1.0/applications/b4e4d2ab-e2cb-45d5-a31a-98eb3f364001'

# Update `redirectUris` for `web` property
az rest --method PATCH \
    --uri 'https://graph.microsoft.com/v1.0/applications/b4e4d2ab-e2cb-45d5-a31a-98eb3f364001' \
    --body '{"web":{"redirectUris":["https://myapp.com"]}}'

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>

Vedere anche