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 Studio
OAuth ".
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:
- Ejecute
mkdir -p ~/bin
para asegurarse de que la~/bin
carpeta está presente - Ejecute
mkdir -p ~/azd
para asegurarse de que hay una carpeta local~/azd
presente - Ejecutar
curl -fsSL https://aka.ms/install-azd.sh | bash -s -- --install-folder ~/azd --symlink-folder ~/bin --version <version>
(<version>
seríastable
de forma predeterminada, pero también se puede especificar una versión publicada específica como1.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:
- Ejecute
rm ~/bin/azd
: - 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
Vaya a Azure Portal.
Busque el grupo de recursos, que es rg-your-environment-name<>.
Seleccione Implementaciones para obtener más información.
Compruebe que ha especificado un nombre de entorno que sea el mismo que el nombre del entorno.
Vaya a y, a
https://github.com/<your repo>/actions
continuació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
Elimine manualmente la carpeta ya proporcionada
.azd
:rm -r ~/.azd
Ejecute
azd init
paraazd
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:
Ejecute lo siguiente en Windows:
azd init --template Azure-Samples/todo-java-mongo azd pipeline config
Recibió el siguiente error:
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:
- Cambie el directorio al servicio que produjo un error (
src/api
en el caso defailed packaging service 'api'
) - Ejecute
npm upgrade v8-compile-cache
: - Cambie el directorio a la raíz del repositorio y vuelva a ejecutar el
azd
comando (por ejemploazd package
, oazd 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: 0000aaaa-11bb-cccc-dd22-eeeeee333333\r\nCorrelation ID: aaaa0000-bb11-2222-33cc-444444dddddd\r\nTimestamp: 2022-12-16 21:10:37Z","error_codes":[50005],"timestamp":"2022-12-16 21:10:37Z","trace_id":"0000aaaa-11bb-cccc-dd22-eeeeee333333","correlation_id":"aaaa0000-bb11-2222-33cc-444444dddddd"}
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:
Asegúrese de que se ejecuta en un dispositivo que aparece como compatible, según el mensaje de error.
Vuelva a ejecutar
azd auth login
con la marca--use-device-code=false
anexada:azd auth login --use-device-code=false
Puede recibir un error con el mensaje
localhost refused to connect
después de iniciar sesión. Si es así:- Copie la dirección URL.
- 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.
Después de iniciar sesión, vuelva a ejecutar
azd pipeline config
.