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.
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.
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\$
`$
.
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
$randomIdentifier = (New-Guid).ToString().Substring(0,8)
$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"
}
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.
Dans un environnement PowerShell, ajoutez {}
des crochets autour de la containerRegistryName
variable en tant que point d’interrogation est un caractère autorisé dans un nom de variable.
#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"
}
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.
Dans un environnement PowerShell, ajoutez {}
des crochets autour de la containerRegistryName
variable en tant que point d’interrogation est un caractère autorisé dans un nom de variable.
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.
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).
Utilisez la requête DELETE HTTP pour supprimer un Registre de conteneurs Azure existant.
Dans un environnement PowerShell, ajoutez {}
des crochets autour de la containerRegistryName
variable en tant que point d’interrogation est un caractère autorisé dans un nom de variable.
az rest --method delete `
--url https://management.azure.com/subscriptions/$subscriptionId/resourceGroups/$resourceGroup/providers/Microsoft.ContainerRegistry/registries/${containerRegistryName}?api-version=2023-01-01-preview
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"]}}'
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>
Commentaires sur Azure CLI
Azure CLI est un projet open source. Sélectionnez un lien pour fournir des commentaires :