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 azd
o , 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 Studio
OAuth ."
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:
- Executar
mkdir -p ~/bin
para garantir que a~/bin
pasta esteja presente - Executar
mkdir -p ~/azd
para garantir que uma pasta local~/azd
esteja presente - 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 como1.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:
- Execute
rm ~/bin/azd
- 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
Acesse o portal do Azure.
Localize seu grupo de recursos, que é rg-seu-nome-do-ambiente<>.
Selecione Implantações para obter mais informações.
Verifique se você especificou um nome de ambiente igual ao nome do ambiente.
Vá para
https://github.com/<your repo>/actions
e 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
Exclua manualmente a pasta já fornecida
.azd
:rm -r ~/.azd
Execute
azd init
paraazd
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ê:
Execute o seguinte no Windows:
azd init --template Azure-Samples/todo-java-mongo azd pipeline config
Recebeu o seguinte erro:
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:
- Altere o diretório para o serviço que falhou (
src/api
no caso defailed packaging service 'api'
) - Execute
npm upgrade v8-compile-cache
- Altere o diretório para a raiz do repositório e execute o comando (por exemplo
azd package
,azd
ouazd up
) novamente
azd pipeline config
falha devido à Política de Acesso Condicional
Ao executar azd pipeline config
o , 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: 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"}
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:
Verifique se você está executando em um dispositivo listado como suportado, de acordo com a mensagem de erro.
Execute
azd auth login
novamente com o sinalizador--use-device-code=false
anexado:azd auth login --use-device-code=false
Você pode receber um erro com a mensagem
localhost refused to connect
depois de fazer login. Se for o caso:- Copie a URL.
- Executar
curl '<pasted url>'
(URL entre aspas) em um novo terminal Codespaces.
No terminal original, o login agora deve ser bem-sucedido.
Depois de iniciar sessão, execute
azd pipeline config
novamente o .