Solución de problemas de Azure Developer CLI

En este artículo se proporcionan soluciones a problemas comunes que pueden surgir al usar la CLI para desarrolladores de Azure (azd).

Obtención de ayuda y ofrecimiento de comentarios

Si no puede encontrar lo que busca en este artículo o desea proporcionar comentarios, puede publicar preguntas en discusiones de la CLI para desarrolladores de Azure.

También puede notificar errores abriendo Problemas de GitHub en el repositorio de GitHub de la CLI para desarrolladores de Azure.

Uso del --debug modificador

Si se produce un problema inesperado al trabajar con azd, vuelva a ejecutar el comando con el --debug modificador para habilitar la salida de diagnóstico y depuración adicionales.

azd up --debug

También puede enviar la salida de depuración a un archivo de texto local para mejorar la facilidad de uso. Este enfoque permite la ingesta de la información de depuración en otros sistemas de supervisión y también puede ser útil al presentar un problema en GitHub.

Importante

Asegúrese de censurar cualquier información confidencial al enviar registros de depuración en GitHub o guardarlos en otros sistemas de diagnóstico.

azd deploy --debug > "<your-file-path>.txt"

Directorio .azure

La CLI para desarrolladores de Azure supone que los directorios almacenados en el directorio son entornos de la .azure CLI para desarrolladores de Azure. No ejecute comandos de la CLI para desarrolladores de Azure desde el directorio principal de un usuario que tenga instalada la CLI de Azure.

No ha iniciado sesión en Azure o ha expirado el token en Visual Studio

Después de ejecutar azd init -t <template-name> en Visual Studio, obtendrá el siguiente error: "Para acceder a remoto: este repositorio, debe volver a autorizar la aplicación Visual StudioOAuth ".

Solución

Ejecute azd auth login para actualizar el token de acceso.

Los permisos de cuenta de Azure actualizados no se actualizan en azd

De forma predeterminada, azd almacena en caché las credenciales y los permisos de Azure. Si a su cuenta de Azure se le asignan nuevos roles y permisos, o se agrega a suscripciones adicionales, es posible que estos cambios no se reflejen inmediatamente en azd. Para resolver este problema, cierre sesión y vuelva a azd iniciar sesión en con los siguientes comandos:

azd auth logout

azd auth login

Siga las indicaciones del azd auth login comando para completar el proceso de inicio de sesión y actualizar las credenciales almacenadas en caché.

Limitaciones de Cloud Shell para azd

Hay algunas limitaciones para ejecutarse azd en Cloud Shell:

Compatibilidad con Docker en Cloud Shell

Cloud Shell no admite la ejecución de docker build o run comandos porque el demonio de Docker no se está ejecutando. Para más información, consulte Solución de problemas de Cloud Shell.

Tiempo de espera de Cloud Shell

Cloud Shell puede agotar el tiempo de espera durante una implementación larga u otras tareas de larga duración. Asegúrese de que la sesión no se vuelve inactiva. Consulte Límites de uso de Cloud Shell.

Interfaz de Cloud Shell

Cloud Shell es principalmente una interfaz de línea de comandos y tendrá menos características que un entorno de desarrollo integrado como Visual Studio Code.

No se puede conectar al demonio de Docker en Cloud Shell

Cloud Shell usa un contenedor para hospedar el entorno de shell, por lo que no se permiten las tareas que requieren ejecutar el demonio de Docker.

Instalación de una versión diferente de azd en Cloud Shell

En algunos casos, puede ser necesario instalar una versión diferente de azd la versión que ya está en uso en Cloud Shell. Para hacerlo en Bash:

  1. Ejecute mkdir -p ~/bin para asegurarse de que la ~/bin carpeta está presente
  2. Ejecute mkdir -p ~/azd para asegurarse de que hay una carpeta local ~/azd presente
  3. Ejecutar curl -fsSL https://aka.ms/install-azd.sh | bash -s -- --install-folder ~/azd --symlink-folder ~/bin --version <version> (<version> sería stable de forma predeterminada, pero también se puede especificar una versión publicada específica como 1.0.0 ).

Una vez instalada, la versión de azd vinculada simbólicamente en ~/bin tendrá prioridad sobre la versión de azd vinculada simbólicamente en /usr/local/bin.

Para volver a usar la versión de azd ya instalada en Cloud Shell en Bash:

  1. Ejecute rm ~/bin/azd:
  2. Ejecute rm -rf ~/azd:

Solución

Use otro host para realizar tareas que requieran el demonio de Docker. Una opción es usar docker-machine, como se describe en la documentación de solución de problemas de Cloud Shell.

Requisito de la CLI de Azure Bicep

azd up y azd provision requieren la versión más reciente de la CLI de Azure Bicep. Es posible que reciba el siguiente mensaje de error: "Error: no se pudo compilar la plantilla de bicep: error al ejecutar la compilación de Bicep del módulo de PowerShell: código de salida: 1, stdout: , stderr: ADVERTENCIA: hay disponible una nueva versión de Bicep: v0.4.1272".

Solución

Anteriormente, Bicep era un preqrequisite para instalar y usar azd . azd ahora instala Bicep automáticamente dentro del ámbito local azd (no globalmente) y este problema ahora debe resolverse. Sin embargo, si desea usar una versión diferente, puede establecer la variable de entorno: AZD_BICEP_TOOL_PATH para que apunte a la ubicación de la versión que necesita.

azd up o azd provision se produce un error

A veces, las cosas pueden ir awry con azd up o azd provision. Estos son algunos de los errores comunes:

  • "No se pueden aprovisionar determinados recursos en una región de Azure porque la región está fuera de capacidad".
  • "El proveedor de recursos relevante no está presente en esa región".

Los pasos de solución de problemas pueden diferir, en función de la causa principal.

Solución

  1. Vaya a Azure Portal.

  2. Busque el grupo de recursos, que es rg-your-environment-name<>.

  3. Seleccione Implementaciones para obtener más información.

  4. Compruebe que ha especificado un nombre de entorno que sea el mismo que el nombre del entorno.

  5. Vaya a y, a https://github.com/<your repo>/actionscontinuación, consulte el archivo de registro en la ejecución de canalización para obtener más información.

Para otros recursos, consulte Solución de errores comunes de implementación de Azure: Azure Resource Manager.

azd init requiere sudo.

Antes de azd version = azure-dev-cli_0.2.0-beta.1, azd crearía una .azd carpeta con drw-r--r-- acceso.

Esto provocará un problema, ya que el uso de esta o cualquier versión anterior en cualquier configuración de Linux (WSL, ssh-remote, devcontainer, etc.) ya proporciona una .azd carpeta con modo de solo lectura.

Solución

  1. Elimine manualmente la carpeta ya proporcionada .azd :

    rm -r ~/.azd
    
  2. Ejecute azd init para azd que vuelva a crear la carpeta con los niveles de acceso adecuados.

azd monitor para el contenedor de desarrollo

azd monitor actualmente no se admite si usa un contenedor de desarrollo como entorno de desarrollo.

No se puede autenticar en entornos de Codespaces

Si experimenta problemas de autenticación en Codespaces, asegúrese de que la plantilla Dockerfile incluye los sudo apt-get update && sudo apt-get install xdg-utils comandos. El xdg-utils comando abrirá una pestaña del explorador que le permite iniciar sesión.

Static Web Apps no se puede implementar a pesar del mensaje correcto

Existe un problema conocido al implementar en Azure Static Web Apps en el que la salida predeterminada azd up puede indicar que la acción se realizó correctamente, pero los cambios no se implementaron realmente. Para diagnosticar este problema, ejecute el azd up comando con la --debug marca habilitada. En los registros de salida puede ver el mensaje siguiente:

Preparing deployment. Please wait...
An unknown exception has occurred

Es más probable que encuentre este problema cuando azd se ejecuta desde una acción de GitHub. Como solución alternativa, después de compilar el sitio, copie staticwebapp.config.json en la carpeta de compilación. Puede automatizar este paso mediante un enlace de comandos de prepaquete o de implementación previa, lo que le permite ejecutar scripts personalizados en varios puntos de los flujos de trabajo del comando azd.

El equipo del producto está trabajando para resolver este problema.

Error de Acciones de GitHub: "No tiene permiso de obtención de secretos en el almacén de claves"

Compartir el mismo nombre de entorno o grupo de recursos al aprovisionar recursos localmente y en Acciones de GitHub puede producir el error Does not have secrets get permission on key vault.. del servicio Key Vault. Key Vault no admite actualizaciones de permisos incrementales a través de Bicep, lo que significa que el flujo de trabajo de Acciones de GitHub sobrescribe los permisos de directiva de acceso del usuario local.

La solución recomendada para este problema es usar nombres de entorno independientes para flujos de trabajo de Acciones de GitHub y desarrollo local. Obtenga más información sobre el uso de varios entornos con el azd env comando en la página de preguntas más frecuentes.

Compatibilidad con exploradores basados en texto

Actualmente, los exploradores basados en texto no son compatibles con azd monitor.

azd pipeline config uso de AzDo para plantillas de Java en Windows

Es posible que se produzca un error al ejecutar azd pipeline config con AzDo para plantillas de Java en Windows. Por ejemplo, tiene:

  1. Ejecute lo siguiente en Windows:

    azd init --template Azure-Samples/todo-java-mongo
    azd pipeline config
    
  2. Recibió el siguiente error:

    Screenshot showing the error received when running azd pipeline config with AzDo for Java on Windows.

Solución

Este es un problema conocido. Mientras solucionamos este problema, pruebe el siguiente comando:

git update-index --chmod=+x src/api/mvnw && git commit -m "Fix executable bit permissions" && git push

failed packaging service 'api': failed invoking action 'package', failed to run NPM script build, signal: segmentation fault error después de actualizar azd en Apple Silicon (M1/M2)

En algunas situaciones, la actualización de la versión de x86_64 de azd a un binario ARM64 puede producir errores en las plantillas que se han compilado con la versión de x86_64 de azd. Esto se debe a que la plantilla usa una versión de v8-compile-cache la que puede intentar cargar el código de bytes integrado en x86_64 en un proceso arm64.

Para corregir este problema, actualice el v8-compile-cache paquete en el proyecto afectado:

  1. Cambie el directorio al servicio que produjo un error (src/api en el caso de failed packaging service 'api')
  2. Ejecute npm upgrade v8-compile-cache:
  3. Cambie el directorio a la raíz del repositorio y vuelva a ejecutar el azd comando (por ejemplo azd package , o azd up)

azd pipeline config error debido a la directiva de acceso condicional

Al ejecutar azd pipeline config, puede recibir un error similar al siguiente:

ERROR: failed to create or update service principal: failed retrieving application list, failed executing request: http call(https://login.microsoftonline.com/common/oauth2/v2.0/token)(POST) error: reply status code was 400:
{"error":"invalid_grant","error_description":"AADSTS50005: User tried to log in to a device from a platform (Unknown) that's currently not supported through Conditional Access policy. Supported device platforms are: iOS, Android, Mac, and Windows flavors.\r\nTrace ID: be3438c1-42fc-4c37-96d8-0e723ac54f01\r\nCorrelation ID: f535565f-9f3c-4014-ad65-403f514bf892\r\nTimestamp: 2022-12-16 21:10:37Z","error_codes":[50005],"timestamp":"2022-12-16 21:10:37Z","trace_id":"be3438c1-42fc-4c37-96d8-0e723ac54f01","correlation_id":"f535565f-9f3c-4014-ad65-403f514bf892"}

Este error está relacionado con la habilitación del inquilino de Microsoft Entra de las directivas de acceso condicional. La directiva específica requiere que haya iniciado sesión en una plataforma de dispositivo compatible.

También puede recibir este error debido a que se ha iniciado sesión con el mecanismo de código del dispositivo, lo que impide que Microsoft Entra ID detecte correctamente la plataforma del dispositivo.

Solución

Para configurar el flujo de trabajo, deberá conceder a GitHub permiso para implementar en Azure en su nombre. Autorice GitHub mediante la creación de una entidad de servicio de Azure almacenada en un secreto de GitHub denominado AZURE_CREDENTIALS. Seleccione el host de Codespace para conocer los pasos:

  1. Asegúrese de que se ejecuta en un dispositivo que aparece como compatible, según el mensaje de error.

  2. Vuelva a ejecutar azd auth login con la marca --use-device-code=false anexada:

    azd auth login --use-device-code=false
    
  3. Puede recibir un error con el mensaje localhost refused to connect después de iniciar sesión. Si es así:

    1. Copie la dirección URL.
    2. Ejecute curl '<pasted url>' (dirección URL entre comillas) en un nuevo terminal de Codespaces.

    En el terminal original, el inicio de sesión ahora debería realizarse correctamente.

  4. Después de iniciar sesión, vuelva a ejecutar azd pipeline config.