Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Categorías de error
La mayoría de los errores devueltos por la CLI de Azure se dividen en una de estas categorías:
| Categoría del error | Causa general del error |
|---|---|
| Argumento no reconocido | Un parámetro está mal escrito o no existe. |
| Falta el argumento requerido | No se especifica un parámetro necesario o solo se especifica uno de los dos "pares de parámetros". Un parámetro también puede estar mal escrito. |
| Argumento mutuamente excluyente | No se pueden especificar dos o más parámetros juntos. |
| Valor de argumento no válido | El valor del parámetro |
| Solicitud incorrecta | Un código de estado HTTP de 400 devuelve este error. Busque un espacio que falte, un guión de parámetro que falte o una comilla simple o doble adicional o que falte. Este error también se produce cuando un valor de parámetro no contiene un valor permitido. |
| Recurso no encontrado | No se puede encontrar un recurso de Azure al que se hace referencia en un valor de parámetro. |
| Autenticación | Error de autenticación de Microsoft Entra. |
Parámetro de depuración
Una de las mejores maneras de ver qué se está ejecutando la CLI de Azure para cada comando de referencia es usar el --debug parámetro . Estos son ejemplos de --debug para comandos fallidos y exitosos:
# 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
Aquí tienes una parte de la salida de depuración. Observe la ubicación del registro y el argumento no reconocido.
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
...
Compare la salida de error --debug dada en el ejemplo anterior con una ejecución correcta:
# Correct example: Because the resource group name contains special characters, enclose it in quotes
az group create --location eastus2 --name "msdocs-rg-test" --debug
Aquí tienes una parte de la salida de depuración. Observe la ubicación del registro, la llamada API y el tiempo de ejecución.
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)
Para obtener ejemplos de --debug para el formato JSON, consulte diferencias en las citas entre los lenguajes de scripting: cadenas JSON.
Errores comunes de sintaxis
Aunque la CLI de Azure se puede ejecutar en Bash, PowerShell y el símbolo del sistema de Windows (cmd.exe), hay diferencias de sintaxis entre los lenguajes de scripting. Los scripts de la CLI de Azure que contienen comillas simples, comillas dobles y caracteres de escape suelen requerir modificaciones cuando se copian entre idiomas. Este desafío suele revelarse en valores de parámetro, especialmente en los asignados al --query parámetro . Estos son algunos mensajes de error comunes:
Solicitud incorrecta... {algo} no es válido: este error puede deberse a un espacio, comillas simples o dobles o a la falta de una comilla.
Token inesperado...: este error se ve cuando hay un espacio o comillas adicionales.
Valor de jmespath_type no válido: Este error suele provenir de comillas incorrectas en el parámetro
--query.La referencia de variable no es válida: este error se recibe cuando una cadena no tiene el formato correcto, a menudo debido a la concatenación o a un carácter de escape que falta.
Argumentos no reconocidos: este error suele deberse a un carácter de continuación de línea incorrecto o a un nombre de parámetro mal escrito.
Expresión que falta después del operador unario: este error se ve cuando falta un carácter de continuación de línea.
Hay varios artículos de la CLI de Azure dedicados a explicar los errores de sintaxis y proporcionar ejemplos de trabajo:
- Citando diferencias entre los lenguajes de scripting
- Diferencias de sintaxis en el tutorial de Bash, PowerShell y Cmd
- Busque muchos ejemplos de parámetros en la
--querysección Cómo consultar la salida de comandos de Azure CLI usando una consulta JMESPath - Cómo usar la CLI de Azure en un script de Bash
- Consideraciones para ejecutar la CLI de Azure en un lenguaje de scripting de PowerShell
Sugerencia
Si no puede resolver un error de comando, intente usar otro lenguaje de scripting. La mayoría de la documentación de la CLI de Azure se escribe y prueba en Azure Cloud Shell, que usa el lenguaje de scripting de Bash. Si puede obtener un ejemplo de artículo para ejecutar en Bash, pero no se ejecuta en PowerShell, revise el uso de comillas simples y dobles y caracteres de escape.
Solución de problemas de autenticación multifactor (MFA)
Errores de inicio de sesión interactivos
Si se producen errores al ejecutar comandos de la CLI de Azure que crean, modifican o eliminan recursos, el problema puede deberse a una directiva de acceso condicional de Id. de Microsoft Entra que requiere autenticación multifactor (MFA).
Estos errores suelen producirse cuando la directiva requiere MFA, pero no se aplica durante el inicio de sesión.
El recurso no está permitido por la política
Es posible que vea uno de los siguientes errores al usar:
- CLI de Azure, versión 2.75.0 o anterior
Due to a configuration change made by your administrator, or because you moved to a new location,
you must enroll in multi-factor authentication. Interactive authentication is needed.
O:
Resource was disallowed by policy. Reasons: MFA is required. See error details for policy resource
IDs. RequestDisallowedByPolicy Message: Resource policy resource IDs was disallowed by policy.
Reasons: MFA is required.
O:
Unauthorized. RequestDisallowedByPolicy. Resource was disallowed by policy. Reasons: MFA is
required. See error details for policy resource IDs. MFA is required. Users must authenticate with
multi-factor authentication to create or update resources.
Actualice a las siguientes versiones o posteriores para recibir mensajes de error y detalles de directiva más informativos:
- CLI de Azure, versión 2.76.0 o posterior
El siguiente error se produce en la CLI de Azure 2.76.0 y versiones posteriores, donde el acceso condicional requiere MFA para operaciones específicas.
Run the command below to authenticate interactively; additional arguments may be added as needed:
az logout
az login --tenant "aaaabbbb-0000-cccc-1111-dddd2222eeee" --scope "https://management.core.windows.net//.default" --claims-challenge "<claims-challenge-token>"
(RequestDisallowedByPolicy) Resource was disallowed by policy. Policy identifiers. Users must use
MFA for Create/Update operations. Users must authenticate with multi-factor authentication to create
or update resources. Users must use MFA for Create operation. Users must authenticate with
multi-factor authentication to create or update resources. Users must use MFA for Create/Update
operations. Users must authenticate with multi-factor authentication to create or update resources.
Users must use MFA for Create operation. Users must authenticate with multi-factor authentication to
create or update resources.
Opciones de resolución
Pida al administrador de Azure que aplique MFA al iniciar sesión. Esto permite que la sesión cumpla los requisitos de acceso condicional sin pasos adicionales.
Si la aplicación de MFA en el inicio de sesión no es posible, use el
--claims-challengeparámetro para autenticarse de forma interactiva:az logout az login --tenant "aaaabbbb-0000-cccc-1111-dddd2222eeee" --scope "https://management.core.windows.net//.default" --claims-challenge "<claims-challenge-token>"
Para más información, consulte Planeamiento de la autenticación multifactor obligatoria para Azure y otros portales de administración.
Error de carga de DLL al importar win32file
Es posible que experimente el siguiente error al intentar usar la CLI de Azure:
DLL load failed while importing win32file: The specified module could not be found.
The command failed with an unexpected error. Here is the traceback:
DLL load failed while importing win32file: The specified module could not be found.
Traceback (most recent call last):
File "<frozen runpy>", line 198, in _run_module_as_main
File "<frozen runpy>", line 88, in _run_code
File "D:\a\_work\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/__main__.py", line 13, in <module>
File "D:\a\_work\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/telemetry.py", line 19, in <module>
File "D:\a\_work\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/telemetry/__init__.py", line 9, in <module>
File "D:\a\_work\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\portalocker/__init__.py", line 4, in <module>
File "D:\a\_work\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\portalocker/portalocker.py", line 11, in <module>
ImportError: DLL load failed while importing win32file: The specified module could not be found.
PS C:\Users\dsevilla>
Este problema puede producirse debido a una instalación dañada. Para resolver el problema:
- Desinstale la CLI de Azure.
- Vuelva a instalar la CLI de Azure mediante el método de instalación preferido.
Para obtener más información, vea Problema de GitHub n.º 32045.
Error: Valor no válido o no existe
Estos errores a menudo se producen al intentar usar valores de variable que contienen un formato incorrecto. La salida predeterminada de la CLI de Azure es JSON. Si intenta almacenar un identificador para un recurso de Azure en una variable, debe especificar --output tsv. Este es un ejemplo:
# 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'.
Ahora use el tipo de salida 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
Error: Se esperan o requieren argumentos
Recibe este error cuando falta un parámetro obligatorio en un comando de la CLI de Azure o se produce un error tipográfico que hace que la CLI de Azure analice incorrectamente el comando de referencia. Al trabajar con un script, también recibirá este error cuando se cumplen una o varias condiciones:
- Falta un carácter de continuación de línea o es incorrecto.
- Existe un espacio final en el lado derecho de un carácter de continuación de línea al trabajar en el lenguaje de scripting de PowerShell. Splatting de PowerShell solo se admite con matrices y no con tablas hash en los comandos de la CLI de Azure.
- Un nombre de variable contiene un carácter especial, como un guión (-).
Error: Recurso no encontrado
Cuando la CLI de Azure no encuentra el nombre del recurso o el identificador pasados en un valor de parámetro, suele deberse a uno de estos motivos:
- El nombre o el identificador del recurso se escriben incorrectamente.
- El nombre del recurso contiene caracteres especiales y no está rodeado de comillas simples o dobles.
- El valor que se pasa a una variable tiene espacios iniciales o finales no vistos.
- El recurso existe, pero está en una suscripción diferente.
Error: No se pudo analizar la cadena como JSON
Hay diferencias en la manera de citar entre Bash, PowerShell en Linux y PowerShell en Windows.
Además, diferentes versiones de PowerShell pueden generar resultados diferentes. En el caso de parámetros complejos, como una cadena JSON, el procedimiento recomendado es usar la convención de la CLI de @<file> Azure para omitir la interpretación del shell. Para obtener más información, consulte uno de estos artículos:
Para obtener ejemplos de sintaxis JSON para Bash, PowerShell y cmd.exe, consulte el tutorial sobre las diferencias en la forma de citar entre los lenguajes de scripting: cadenas en JSON.
Error: InvalidTemplateDeployment (Despliegue de Plantilla No Válido)
Al intentar crear un recurso de Azure en una ubicación que no ofrezca ese recurso, recibirá un error similar al siguiente: "Error en las SKU siguientes para restricciones de capacidad: myDesiredSkuName" no está disponible actualmente en la ubicación "mySpecifiedLocation".
Este es un ejemplo de error completo para una máquina virtual que no se puede crear en la westus ubicación:
{"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 solución consiste en cambiar una propiedad del recurso de Azure solicitado o probar otra ubicación.
Error: No se encontró la suscripción
Suponiendo que no ha escrito incorrectamente el nombre o el identificador de la suscripción, este error se produce cuando un proveedor de recursos no está registrado en la suscripción activa. Por ejemplo, si desea ejecutar az storage account create, el Microsoft.Storage proveedor debe registrarse. Para registrar un proveedor de recursos, consulte tipos y proveedores de recursos de Azure.
Error: Error al comprobar el certificado de protocolo de enlace incorrecto
Consulte Trabajar detrás de un proxy para obtener información sobre cómo resolver este error.
Trabajar con un proxy
Si usa la CLI de Azure a través de un servidor proxy que usa certificados autofirmados, la biblioteca de solicitudes de Python usada por la CLI de Azure podría producir el siguiente error: SSLError("bad handshake: Error([('SSL routines', 'tls_process_server_certificate', 'certificate verify failed')],)",).
Para solucionar este error, establezca la variable de entorno REQUESTS_CA_BUNDLE en la ruta del archivo de certificado de CA en formato PEM.
| Sistema operativo | Paquete predeterminado de autoridad de certificación |
|---|---|
| Windows de 32 bits | C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2\Lib\site-packages\certifi\cacert.pem |
| Windows de 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 | Modelos Intel: /usr/local/Cellar/azure-cli/<cliversion>/libexec/lib/python<version>/site-packages/certifi/cacert.pem Modelos de silicio: /opt/homebrew/Cellar/azure-cli/<cliversion>/libexec/lib/python<version>/site-packages/certifi/cacert.pem |
Anexe el certificado del servidor proxy al archivo de certificado de agrupación de CA o copie el contenido en otro archivo de certificado. A continuación, establezca REQUESTS_CA_BUNDLE en la nueva ubicación del archivo. Este es un ejemplo:
<Original cacert.pem>
-----BEGIN CERTIFICATE-----
<Your proxy's certificate here>
-----END CERTIFICATE-----
Algunos servidores proxy requieren autenticación. El formato de las HTTP_PROXY variables de entorno o HTTPS_PROXY debe incluir la autenticación, como HTTPS_PROXY="https://username:password@proxy-server:port". Para más detalles, consulte Cómo configurar proxies para el Azure SDK para Python.
Principales del servicio
Para obtener información sobre la solución de problemas de los Service Principals, consulte Limpieza y Solución de Problemas en el tutorial Trabajar con Service Principals.
Otros problemas
Si experimenta un problema de producto con la CLI de Azure que no aparece en este artículo, presente un problema en GitHub.