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
Utilisez l’environnement Bash dans Azure Cloud Shell. Pour plus d’informations, consultez Démarrage rapide pour Bash dans Azure Cloud Shell.
Si vous préférez exécuter les commandes de référence de l’interface de ligne de commande localement, installez l’interface Azure CLI. Si vous exécutez sur Windows ou macOS, envisagez d’exécuter Azure CLI dans un conteneur Docker. Pour plus d’informations, consultez Guide pratique pour exécuter Azure CLI dans un conteneur Docker.
Si vous utilisez une installation locale, connectez-vous à Azure CLI à l’aide de la commande az login. Pour finir le processus d’authentification, suivez les étapes affichées dans votre terminal. Pour connaître les autres options de connexion, consultez Se connecter avec Azure CLI.
Lorsque vous y êtes invité, installez l’extension Azure CLI lors de la première utilisation. Pour plus d’informations sur les extensions, consultez Utiliser des extensions avec Azure CLI.
Exécutez az version pour rechercher la version et les bibliothèques dépendantes installées. Pour effectuer une mise à niveau vers la dernière version, exécutez az upgrade.
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 laaz 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>