Solucionar problemas da Azure Developer CLI

Este artigo fornece soluções para problemas comuns que podem surgir quando você estiver usando a CLI do Desenvolvedor do Azure (azd).

Obter ajuda e fazer comentários

Se você não conseguir encontrar o que está procurando neste artigo ou quiser fornecer comentários, poderá postar perguntas nas Discussões da CLI do Desenvolvedor do Azure.

Você também pode relatar bugs abrindo Problemas do GitHub no repositório GitHub da CLI do Desenvolvedor do Azure.

Usando o --debug switch

Se você encontrar um problema inesperado ao trabalhar com azdo , execute novamente o comando com a opção para habilitar a --debug depuração adicional e a saída de diagnóstico.

azd up --debug

Você também pode enviar a saída de depuração para um arquivo de texto local para melhorar a usabilidade. Essa abordagem permite que as informações de depuração sejam ingeridas por outros sistemas de monitoramento e também pode ser útil ao registrar um problema no GitHub.

Importante

Certifique-se de editar todas as informações confidenciais ao enviar logs de depuração no GitHub ou salvá-los em outros sistemas de diagnóstico.

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

O .azure diretório

A CLI do Desenvolvedor do Azure pressupõe que todos os diretórios armazenados no diretório são ambientes da .azure CLI do Desenvolvedor do Azure. Não execute comandos da CLI do Desenvolvedor do Azure a partir do diretório base de um usuário que tenha a CLI do Azure instalada.

Não conectado ao Azure ou token expirou no Visual Studio

Depois de executar azd init -t <template-name> no Visual Studio, você obtém o seguinte erro: "Para acessar remoto: este repositório, você deve autorizar novamente o aplicativo Visual StudioOAuth ."

Solução

Execute azd auth login para atualizar o token de acesso.

As permissões de conta do Azure atualizadas não são atualizadas em azd

Por padrão, azd armazena em cache suas credenciais e permissões do Azure. Se sua conta do Azure receber novas funções e permissões ou for adicionada a assinaturas adicionais, essas alterações podem não ser refletidas imediatamente no azd. Para resolver esse problema, faça logout e, em azd seguida, faça logon novamente usando os seguintes comandos:

azd auth logout

azd auth login

Siga os prompts do azd auth login comando para concluir o processo de entrada e atualizar suas credenciais armazenadas em cache.

Limitações do Cloud Shell para azd

Há algumas limitações para a execução azd no Cloud Shell:

Suporte ao Docker no Cloud Shell

O Cloud Shell não oferece suporte à execução do docker build ou run comandos porque o daemon do docker não está em execução. Para obter mais informações, consulte Solução de problemas do Cloud Shell.

Tempo limite do Cloud Shell

O Cloud Shell pode atingir o tempo limite durante uma implantação longa ou outras tarefas de longa execução. Certifique-se de que a sessão não fique ociosa. Consulte Limites de uso do Cloud Shell.

Interface do Cloud Shell

O Cloud Shell é principalmente uma interface de linha de comando e terá menos recursos do que um ambiente de desenvolvimento integrado como o Visual Studio Code.

Não é possível conectar-se ao daemon do Docker no Cloud Shell

O Cloud Shell usa um contêiner para hospedar seu ambiente de shell, portanto, tarefas que exigem a execução do daemon do Docker não são permitidas.

Instalar versão diferente do azd no Cloud Shell

Em alguns casos, pode ser necessário instalar uma versão diferente da azd versão já em uso no Cloud Shell. Para fazer isso no bash:

  1. Executar mkdir -p ~/bin para garantir que a ~/bin pasta esteja presente
  2. Executar mkdir -p ~/azd para garantir que uma pasta local ~/azd esteja presente
  3. Executar curl -fsSL https://aka.ms/install-azd.sh | bash -s -- --install-folder ~/azd --symlink-folder ~/bin --version <version> (<version>stable seria por padrão, mas uma versão lançada específica como 1.0.0 também pode ser especificada).

Uma vez instalado, a versão do azd simbolicamente vinculado em ~/bin terá precedência sobre a versão do azd simbolicamente vinculado no /usr/local/bin.

Para voltar a usar a versão do azd já instalada no Cloud Shell no bash:

  1. Execute rm ~/bin/azd
  2. Execute rm -rf ~/azd

Solução

Use outro host para executar tarefas que exijam o daemon docker. Uma opção é usar docker-machine, conforme descrito na documentação de solução de problemas do Cloud Shell.

Requisito da CLI do Azure Bicep

azd up e azd provision exigir a versão mais recente da CLI do Azure Bicep. Você pode receber a seguinte mensagem de erro: "Erro: falha ao compilar o modelo bicep: falha ao executar a compilação do bicep do módulo do PowerShell Az: código de saída: 1, stdout: , stderr: AVISO: Uma nova versão do Bicep está disponível: v0.4.1272."

Solução

Anteriormente, o Bicep era um pré-requisito para instalar e usar azd o . azd agora instala automaticamente o Bicep dentro do escopo local azd (não globalmente) e esse problema agora deve ser resolvido. No entanto, se você quiser usar uma versão diferente, você pode definir a variável de ambiente: AZD_BICEP_TOOL_PATH para apontar para o local da versão que você precisa.

azd up ou azd provision falha

As coisas às vezes podem dar errado com azd up ou azd provision. Os erros comuns incluem:

  • "Não é possível provisionar determinados recursos em uma região do Azure porque a região está fora da capacidade."
  • "Provedor de recursos relevante não está presente naquela região."

As etapas de solução de problemas podem ser diferentes, dependendo da causa raiz.

Solução

  1. Acesse o portal do Azure.

  2. Localize seu grupo de recursos, que é rg-seu-nome-do-ambiente<>.

  3. Selecione Implantações para obter mais informações.

  4. Verifique se você especificou um nome de ambiente igual ao nome do ambiente.

  5. Vá para https://github.com/<your repo>/actionse consulte o arquivo de log na execução do pipeline para obter mais informações.

Para obter outros recursos, consulte Solucionar erros comuns de implantação do Azure - Gerenciador de Recursos do Azure.

azd init exige sudo

Antes azd version = azure-dev-cli_0.2.0-beta.1, azd criaria uma .azd pasta com drw-r--r-- acesso.

Isso causará um problema, pois usar esta ou qualquer versão anterior em qualquer configuração do Linux (WSL, ssh-remote, devcontainer, etc.) já fornece uma .azd pasta com modo somente leitura.

Solução

  1. Exclua manualmente a pasta já fornecida .azd :

    rm -r ~/.azd
    
  2. Execute azd init para azd criar a pasta novamente com os níveis de acesso corretos.

azd monitor para contêiner de desenvolvimento

azd monitor no momento, não há suporte se você usar um contêiner de desenvolvimento como seu ambiente de desenvolvimento.

Não é possível autenticar em ambientes Codespaces

Se você estiver enfrentando problemas de autenticação no Codespaces, verifique se o modelo Dockerfile inclui os sudo apt-get update && sudo apt-get install xdg-utils comandos. O xdg-utils comando abrirá uma guia do navegador que permite que você faça login.

Aplicativos Web estáticos não conseguem implantar apesar da mensagem de êxito

Existe um problema conhecido ao implantar nos Aplicativos Web Estáticos do Azure no qual a saída padrão azd up pode indicar que a ação foi bem-sucedida, mas as alterações não foram realmente implantadas. Você pode diagnosticar esse problema executando o azd up comando com o --debug sinalizador habilitado. Nos logs de saída, você pode ver a seguinte mensagem:

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

É mais provável que você encontre esse problema quando azd é executado a partir de uma ação do GitHub. Como solução alternativa, depois de criar seu site, copie staticwebapp.config.json para a pasta de compilação. Você pode automatizar essa etapa usando um gancho de comando prepackage ou predeploy, que permite executar scripts personalizados em vários pontos nos fluxos de trabalho de comando azd.

A equipe de produto está trabalhando para resolver esse problema.

Erro de ações do GitHub - "Não tem segredos obter permissão no cofre de chaves"

Compartilhar o mesmo nome de ambiente ou grupo de recursos ao provisionar recursos localmente e em Ações do GitHub pode produzir o erro Does not have secrets get permission on key vault.. do serviço Cofre de Chaves. O Cofre de Chaves não oferece suporte a atualizações incrementais de permissões por meio do Bicep, o que efetivamente significa que o fluxo de trabalho Ações do GitHub substitui as permissões da Política de Acesso do usuário local.

A solução recomendada para esse problema é usar nomes de ambiente separados para fluxos de trabalho de desenvolvimento local e Ações do GitHub. Leia mais sobre como usar vários ambientes com o azd env comando na página de perguntas frequentes.

Suporte a navegador baseado em texto

No momento, os navegadores baseados em texto não são suportados pelo azd monitor.

azd pipeline config usando modelos AzDo para Java no Windows

Você pode encontrar uma falha ao executar azd pipeline config com modelos AzDo para Java no Windows. Por exemplo, você:

  1. Execute o seguinte no Windows:

    azd init --template Azure-Samples/todo-java-mongo
    azd pipeline config
    
  2. Recebeu o seguinte erro:

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

Solução

Esse é um problema conhecido. Enquanto resolvemos esse problema, tente o seguinte 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 falha após a atualização azd no Apple Silicon (M1/M2)

Em algumas situações, a atualização da versão x86_64 do azd para um binário ARM64 pode resultar em falhas para modelos que foram criados com a versão x86_64 do azd. Isso ocorre porque o modelo usa uma versão da v8-compile-cache qual pode tentar carregar bytecode criado sob x86_64 em um processo ARM64.

Para corrigir esse problema, atualize o v8-compile-cache pacote no projeto afetado:

  1. Altere o diretório para o serviço que falhou (src/api no caso de failed packaging service 'api')
  2. Execute npm upgrade v8-compile-cache
  3. Altere o diretório para a raiz do repositório e execute o comando (por exemploazd package, azd ou azd up) novamente

azd pipeline config falha devido à Política de Acesso Condicional

Ao executar azd pipeline configo , você pode receber um erro como o seguinte:

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"}

Esse erro está relacionado à habilitação de políticas de acesso condicional do locatário do Microsoft Entra. A política específica requer que você esteja conectado a uma plataforma de dispositivo compatível.

Você também pode estar recebendo esse erro devido a estar conectado usando o mecanismo de código do dispositivo, que impede que o Microsoft Entra ID detecte sua plataforma de dispositivo corretamente.

Solução

Para configurar o fluxo de trabalho, você precisa dar permissão ao GitHub para implantar no Azure em seu nome. Autorize o GitHub criando uma Entidade de Serviço do Azure armazenada em um segredo do GitHub chamado AZURE_CREDENTIALS. Selecione seu host Codespace para as etapas:

  1. Verifique se você está executando em um dispositivo listado como suportado, de acordo com a mensagem de erro.

  2. Execute azd auth login novamente com o sinalizador --use-device-code=false anexado:

    azd auth login --use-device-code=false
    
  3. Você pode receber um erro com a mensagem localhost refused to connect depois de fazer login. Se for o caso:

    1. Copie a URL.
    2. Executar curl '<pasted url>' (URL entre aspas) em um novo terminal Codespaces.

    No terminal original, o login agora deve ser bem-sucedido.

  4. Depois de iniciar sessão, execute azd pipeline confignovamente o .