Partager via


Utiliser l’API REST Azure avec Azure CLI

Les API REST (Representational State Transfer) sont des points de terminaison de service qui prennent en charge différents ensembles d’opérations HTTP (ou méthodes). Ces méthodes HTTP vous permettent d’effectuer différentes actions pour les ressources de votre service. La az rest commande ne doit être utilisée que lorsqu’une commande Azure CLI existante n’est pas disponible.

Cet article présente les requêtes HTTP PUT, PATCH, GET, POST et DELETE pour gérer les ressources Azure Container Registry. Azure Container Registry est un service de registre managé qui vous permet de créer et de gérer des registres de conteneurs Azure qui stockent des images conteneur et des artefacts associés.

Prérequis

Conseils pour l’utilisation az rest

Voici quelques informations utiles lors de l’utilisation d’az rest :

  • La az rest commande s’authentifie automatiquement à l’aide des informations d’identification de connexion.
  • Si l’en-tête d’autorisation n’est pas défini, il joint l’en-tête Authorization: Bearer <token>, où <token> il est récupéré à partir de l’ID Microsoft Entra.
  • La ressource cible du jeton est dérivée du --url paramètre lorsque le --url paramètre commence par un point de terminaison à partir de la sortie de la az cloud show --query endpoints commande. Paramètre --url requis.
  • Utilisez le paramètre d’une --resource ressource personnalisée.
  • Si l’en-tête Content-Type n’est pas défini et --body qu’il s’agit d’une chaîne JSON valide, l’en-tête Content-Type est défini par défaut sur « application/json ».
  • Lorsque vous utilisez --uri-parameters des requêtes sous la forme d’OData, veillez à échapper $ dans différents environnements : inBash, escape $ as and inPowerShell, escape $ as \$ `$.

Utiliser PUT pour créer un Registre de conteneurs Azure

Utilisez la méthode PUT HTTP pour créer un registre de conteneurs Azure.

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

Voici un exemple avec les paramètres terminés :

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

Sortie JSON pour Bash et 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"
}

Utiliser PATCH pour mettre à jour votre Registre de conteneurs Azure

Mettez à jour votre Registre de conteneurs Azure à l’aide de la requête HTTP PATCH. Modifiez le --body paramètre avec les propriétés que vous souhaitez mettre à jour. Cet exemple utilise les variables définies dans la section précédente et met à jour le nom de la référence SKU ($skuName="Premium ») d’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'}}"

La sortie du dictionnaire JSON suivante comporte des champs omis pour la concision :

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

Utiliser GET pour récupérer votre Registre de conteneurs Azure

Utilisez la requête GET HTTP pour afficher les résultats de mise à jour de la requête PATCH. Cet exemple utilise les variables définies dans la section précédente.

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

La sortie de la méthode GET est la même que celle indiquée pour PUT.

Utiliser POST pour régénérer vos informations d’identification Azure Container Registry

Utilisez la requête HTTP POST pour régénérer l’une des informations d’identification de connexion pour Azure Container Registry créée dans cet article.

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

La sortie du dictionnaire JSON suivante comporte des champs omis pour la concision :

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

Une fois la demande terminée, vos informations d’identification Azure Container Registry spécifiées seront régénérées avec un nouveau mot de passe, ainsi que votre mot de passe existant (mot de passe2).

Utiliser DELETE pour supprimer votre Registre de conteneurs Azure

Utilisez la requête DELETE HTTP pour supprimer un Registre de conteneurs Azure existant.

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

Exemple supplémentaire az rest pour Microsoft Graph

Il est parfois utile de voir un exemple pour un autre scénario. Voici un exemple qui utilise l’API Microsoft Graph. Afin de mettre à jour les URI de redirection pour une application, appelez l’API REST de mise à jour d’application, comme dans ce code :

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

Nettoyer les ressources

Une fois les ressources créées dans cet article, vous pouvez supprimer le groupe de ressources. Lorsque vous supprimez le groupe de ressources, toutes les ressources de ce groupe de ressources sont supprimées.

az group delete --resource-group <resourceGroupName>

Voir aussi