Partager via


Résolution des problèmes liés à Azure CLI

Catégories d’erreurs

La plupart des erreurs retournées par Azure CLI se trouvent dans l’une des catégories suivantes :

Catégorie d’erreur Cause d’erreur générale
Argument non reconnu Un paramètre est mal orthographié ou n’existe pas.
Argument obligatoire manquant Un paramètre obligatoire n’est pas spécifié ou un seul des deux « paires de paramètres » est spécifié. Un paramètre peut également être mal orthographié.
Argument mutuellement exclusif Deux paramètres ou plus ne peuvent pas être spécifiés ensemble.
valeur d’argument non valide La valeur du paramètre n’est pas valide. Cette erreur est souvent due au guillemet, à un caractère d’échappement ou à un espacement.
Demande incorrecte Un code d’état HTTP de 400 retourne cette erreur. Recherchez un espace manquant, un tiret de paramètre manquant ou un guillemet simple ou double supplémentaire ou manquant. Cette erreur se produit également lorsqu’une valeur de paramètre ne contient pas de valeur autorisée.
ressource introuvable Une ressource Azure référencée dans une valeur de paramètre est introuvable.
Authentification Échec de l’authentification Microsoft Entra.

Paramètre --debug

L’une des meilleures façons de voir ce qu’exécute Azure CLI pour chaque commande de référence Azure CLI consiste à utiliser le paramètre --debug. Voici des exemples de --debug pour une commande ayant échoué et réussie :

# Error example: Create a resource group, but omit the quotes around the resource group name.
az group create --location eastus2 --name msdocs-rg-test --debug

Voici une partie de la sortie de débogage. Remarquez l’emplacement du journal et l’argument inconnu.

cli.knack.cli: Command arguments: ['group', 'create', '-l', 'eastus2', '-name', 'msdocs-rg-test', '--debug']
...
cli.azure.cli.core.azlogging: metadata file logging enabled - writing logs to '/home/myName/.azure/commands/YYYY-MM-DD.HH-MM-SS.group_create.8912.log'.
...
cli.azure.cli.core.azclierror: unrecognized arguments: msdocs-rg-test
...

Comparez l’erreur --debug sortie donnée ci-dessus à une exécution réussie :

# Correct example: Because the resource group name contains special characters, enclose it in quotes
az group create --location eastus2 --name "msdocs-rg-test" --debug

Voici une partie de la sortie de débogage. Notez l’emplacement du journal, l’appel d’API et l’heure d’exécution.

cli.knack.cli: Command arguments: ['group', 'create', '-l', 'eastus2', '-n', 'msdocs-rg-test', '--debug']
...
cli.azure.cli.core.azlogging: metadata file logging enabled - writing logs to '/home/myName/.azure/commands/YYYY-MM-DD.HH-MM-SS.group_create.8912.log'.
...
cli.azure.cli.core.sdk.policies: Request URL: 'https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/msdocs-rg-test?api-version=YYYY-MM-DD'
cli.azure.cli.core.sdk.policies: Request method: 'PUT'
cli.azure.cli.core.sdk.policies: Request headers:
cli.azure.cli.core.sdk.policies:     'Content-Type': 'application/json'
cli.azure.cli.core.sdk.policies:     'Content-Length': '23'
cli.azure.cli.core.sdk.policies:     'Accept': 'application/json'
cli.azure.cli.core.sdk.policies:     'x-ms-client-request-id': 'ba7ee6f4-2dcc-11ef-81ce-00155dadc5c8'
cli.azure.cli.core.sdk.policies:     'CommandName': 'group create'
cli.azure.cli.core.sdk.policies:     'ParameterSetName': '-l -n --debug'
cli.azure.cli.core.sdk.policies:     'User-Agent': 'AZURECLI/2.61.0 (RPM) azsdk-python-core/1.28.0 Python/3.9.19 (Linux-5.10.102.2-microsoft-standard-x86_64-with-glibc2.35) cloud-shell/1.0'
cli.azure.cli.core.sdk.policies:     'Authorization': '*****'
cli.azure.cli.core.sdk.policies: Request body:
cli.azure.cli.core.sdk.policies: {"location": "eastus2"}
urllib3.connectionpool: Starting new HTTPS connection (1): management.azure.com:443
urllib3.connectionpool: https://management.azure.com:443 "PUT /subscriptions/3618afcd-ea52-4ceb-bb46-53bb962d4e0b/resourcegroups/msdocs-rg-test?api-version=2022-09-01 HTTP/1.1" 201 226
cli.azure.cli.core.sdk.policies: Response status: 201
...
cli.azure.cli.core.sdk.policies:     'Date': 'Tue, 18 Jun 2024 23:44:41 GMT'
cli.azure.cli.core.sdk.policies: Response content:
cli.azure.cli.core.sdk.policies: {"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/msdocs-rg-test","name":"msdocs-rg-test","type":"Microsoft.Resources/resourceGroups","location":"eastus2","properties":{"provisioningState":"Succeeded"}}
...
cli.__main__: Command ran in 1.829 seconds (init: 0.111, invoke: 1.718)

Pour des exemples de --debug pour la mise en forme JSON, consultez : différences de citation entre les langages de script - chaînes JSON.

Erreurs de syntaxe courantes

Bien qu’Azure CLI puisse s’exécuter à la fois dans Bash, PowerShell et Windows Cmd, il existe des différences de syntaxe entre les langages de script. Les scripts Azure CLI contenant des guillemets simples, des guillemets doubles et des caractères d’échappement doivent généralement être modifiés lors de la copie entre les langues. Ce défi se révèle le plus souvent dans les valeurs de paramètre, en particulier dans les valeurs affectées au paramètre --query. Voici quelques messages d’erreur courants :

  • "Demande incorrecte ... {quelque chose} n’est pas valide» peut être dû à un espace, à un guillemet simple ou double ou à un manque de guillemets.

  • «jeton inattendu...» apparaît lorsqu'il y a un espace ou un guillemet supplémentaire.

  • «Valeur de jmespath_type non valide» : L’erreur provient souvent d’une mauvaise utilisation des guillemets dans le paramètre --query.

  • « "Référence de variablen’est pas valide" est reçu lorsque la chaîne n'est pas correctement formée, souvent à cause d'une concaténation ou d'un caractère d'échappement manquant. »

  • «arguments non reconnus» est souvent dû à un caractère de continuation de ligne incorrect ou à un nom de paramètre mal orthographié.

  • «Expression manquante après l’opérateur unaire» est visible lorsqu’un caractère de continuation de ligne est manquant.

Il existe plusieurs articles Azure CLI dédiés à l’explication des erreurs de syntaxe et à la fourniture d’exemples de travail :

Pourboire

Si vous ne pouvez pas résoudre une erreur de commande, essayez d’utiliser un autre langage de script. La plupart des documents Azure CLI sont écrits et testés dans Azure Cloud Shell (ACS) avec un langage de script Bash. Si vous pouvez obtenir un exemple d’article à exécuter dans ACS Bash, mais qu’il ne s’exécute pas dans Windows PowerShell, passez en revue l’utilisation de guillemets simples et doubles et les caractères d’échappement.

Erreur : valeur non valide ou n’existe pas

Ces erreurs se produisent souvent lors de la tentative d’utilisation d’une valeur de variable qui contient un format incorrect. La sortie par défaut pour Azure CLI est JSON. Par conséquent, si vous essayez de stocker un ID pour une ressource Azure dans une variable, vous devez spécifier --output tsv. Voici un exemple :

# Get a subscription that contains a name or phrase
subscriptionID=$(az account list --query "[?contains(name,'my case sensitive search phrase')].id")
echo $subscriptionID

# output as JSON
[ "00000000-0000-0000-0000-000000000000" ]

# Try to set your subscription to the new ID
az account set --subscription $subscriptionID

# error output
The subscription of '"00000000-0000-0000-0000-000000000000"' doesn't exist in cloud 'AzureCloud'.

Utilisez maintenant le type de sortie tsv.

# Get the active subscription
subscriptionID=$(az account list --query "[?contains(name,'my case sensitive search phrase')].id" --output tsv)
echo $subscriptionID

# output as TSV
00000000-0000-0000-0000-000000000000

# Successfully set your subscription to the new ID
az account set --subscription $subscriptionID

Erreur : les arguments sont attendus ou obligatoires

Vous recevez cette erreur lorsqu'une commande Azure CLI manque un paramètre requis, ou lorsqu'une erreur typographique entraîne une interprétation incorrecte de la commande de référence par Azure CLI. Lorsque vous utilisez un script, vous recevez également cette erreur quand une ou plusieurs conditions sont remplies :

  • Un caractère de continuation de ligne est manquant ou incorrect.
  • Un espace de fin existe sur le côté droit d’un caractère de continuation de ligne lors de l’utilisation du langage de script PowerShell. À ce stade, la fonctionnalité de splatting pour n’est pas prise en charge avec les commandes Azure CLI.
  • Un nom de variable contient un caractère spécial, tel qu’un tiret (-).

Erreur : Ressource introuvable

Lorsque l’interface de ligne de commande Azure ne trouve pas le nom de la ressource ou l’ID passé dans une valeur de paramètre, elle est généralement due à l’une de ces raisons :

  • Le nom ou l’ID de la ressource est orthographié de manière incorrecte.
  • Le nom de la ressource contient des caractères spéciaux et n’est pas entouré de guillemets simples ou doubles.
  • La valeur passée à une variable a des espaces de début ou de fin invisibles.
  • La ressource existe, mais se trouve dans un autre abonnement.

Erreur : Échec de l’analyse de la chaîne au format JSON

Il existe des différences entre Bash, PowerShell sous Linux et PowerShell sous Windows. En outre, différentes versions de PowerShell peuvent produire des résultats différents. Pour les paramètres complexes, comme une chaîne JSON, la meilleure pratique consiste à utiliser la convention de @<file> d’Azure CLI pour contourner l’interprétation d’un interpréteur de commandes. Pour plus d’informations, consultez l’un des articles suivants :

Pour obtenir des exemples de syntaxe JSON pour Bash, PowerShell et Cmd.exe, consultez la comparaison des différences entre les langages de script - le didacticiel sur les chaînes JSON.

Erreur : DéploiementDeModèleInvalide

Lorsque vous essayez de créer une ressource Azure dans un emplacement qui n’offre pas cette ressource, vous recevez une erreur similaire à ce message : « Les références SKU suivantes ont échoué pour les restrictions de capacité : myDesiredSkuName » n’est actuellement pas disponible à l’emplacement « mySpecifiedLocation ».

Voici un exemple d’erreur complet pour une machine virtuelle qui ne peut pas être créée à l’emplacement westus :

{"error":{"code":"InvalidTemplateDeployment","message":"The template deployment 'vm_deploy_<32 character ID>'
is not valid according to the validation procedure. The tracking id is '<36 character ID>'.
See inner errors for details.","details":[{"code":"SkuNotAvailable","message":"The requested VM size for resource
'Following SKUs have failed for Capacity Restrictions: Standard_DS1_v2' is currently not available
in location 'westus'. Please try another size or deploy to a different location
or different zone. See https://aka.ms/azureskunotavailable for details."}]}}

La solution consiste à modifier une propriété de votre ressource Azure demandée ou à essayer un autre emplacement.

Erreur : Abonnement introuvable

En supposant que vous n’avez pas correctement tapé un nom d’abonnement ou un ID, cette erreur se produit lorsqu’un fournisseur de ressources n’est pas inscrit dans l’abonnement actif. Par exemple, si vous souhaitez exécuter az storage account create, le fournisseur Microsoft.Storage doit être inscrit. Pour inscrire un fournisseur de ressources, consultez fournisseurs et types de ressources Azure.

Erreur : Poignée de main incorrecte... échec de la vérification du certificat

Consultez Travailler derrière un proxy pour plus d’informations sur la résolution de cette erreur.

Travailler derrière un proxy

Si vous utilisez Azure CLI sur un serveur proxy qui utilise des certificats auto-signés, la bibliothèque de requêtes Python utilisée par Azure CLI peut entraîner l’erreur suivante : SSLError("bad handshake: Error([('SSL routines', 'tls_process_server_certificate', 'certificate verify failed')],)",). Pour résoudre cette erreur, définissez la variable d’environnement REQUESTS_CA_BUNDLE sur le chemin du fichier de certificat d'autorité de certification au format PEM.

OS Bundle d’autorité de certification par défaut
Windows 32 bits C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2\Lib\site-packages\certifi\cacert.pem
Windows 64 bits C:\Program Files\Microsoft SDKs\Azure\CLI2\Lib\site-packages\certifi\cacert.pem
Ubuntu/Debian Linux /opt/az/lib/python<version>/site-packages/certifi/cacert.pem
CentOS Stream/RHEL/SUSE Linux /usr/lib64/az/lib/python<version>/site-packages/certifi/cacert.pem
macOS Modèles Intel : /usr/local/Cellar/azure-cli/<cliversion>/libexec/lib/python<version>/site-packages/certifi/cacert.pem

Modèles en silicium : /opt/homebrew/Cellar/azure-cli/<cliversion>/libexec/lib/python<version>/site-packages/certifi/cacert.pem

Ajoutez le certificat du serveur proxy au fichier de certificat du groupe d’autorité de certification ou copiez le contenu dans un autre fichier de certificat. Définissez ensuite REQUESTS_CA_BUNDLE sur le nouvel emplacement du fichier. Voici un exemple :

<Original cacert.pem>

-----BEGIN CERTIFICATE-----
<Your proxy's certificate here>
-----END CERTIFICATE-----

Certains proxys nécessitent une authentification. Le format des variables d’environnement HTTP_PROXY ou HTTPS_PROXY doit inclure l’authentification, telle que HTTPS_PROXY="https://username:password@proxy-server:port". Pour plus d’informations, consultez Comment configurer des proxys pour le Kit de développement logiciel (SDK) Azure pour Python.

Entités de service

Pour plus d’informations sur la résolution des problèmes liés aux principaux de service, consultez nettoyage et résolution des problèmes dans le didacticiel Utiliser les principaux de service.

Autres problèmes

Si vous rencontrez un problème de produit avec Azure CLI non répertorié dans cet article, fichier un problème sur GitHub.

Voir aussi