Устранение неполадок с Azure Developer CLI

В этой статье приведены решения распространенных проблем, которые могут возникнуть при использовании интерфейса командной строки разработчика Azure (azd).

Справка и отзывы

Если вы не можете найти то, что вы ищете в этой статье или хотите предоставить отзыв, вы можете отправить вопросы в обсуждениях CLI разработчика Azure.

Вы также можете сообщить об ошибках, открыв GitHub Issues в репозитории GitHub для разработчиков Azure CLI.

Использование коммутатора --debug

Если при работе с azdней возникла непредвиденная проблема, выполните команду с параметром --debug , чтобы включить дополнительные выходные данные отладки и диагностики.

azd up --debug

Вы также можете отправить выходные данные отладки в локальный текстовый файл для улучшения удобства использования. Такой подход позволяет получать сведения об отладке другими системами мониторинга, а также может оказаться полезным при отправке проблемы на GitHub.

Внимание

При отправке журналов отладки на GitHub или сохранении их в других системах диагностика обязательно отредактировать конфиденциальную информацию.

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

.azure Каталог

Интерфейс командной строки разработчика Azure предполагает, что все каталоги, хранящиеся в каталоге .azure , являются средами Azure Developer CLI. Не запускайте команды Командной строки разработчика Azure из домашнего каталога пользователя, на котором установлен Azure CLI.

Не выполнен вход в Azure или истек срок действия маркера в Visual Studio

После запуска azd init -t <template-name> в Visual Studio вы получите следующую ошибку: "Чтобы получить доступ к удаленному репозиторию, необходимо повторно выполнить проверку подлинности Приложение OAuth ликацииVisual Studio".

Решение

Выполните обновление azd auth login маркера доступа.

Обновленные разрешения учетной записи Azure не обновляются в azd

По умолчанию azd кэширует учетные данные и разрешения Azure. Если ваша учетная запись Azure назначена новым ролям и разрешениям или добавляется в дополнительные подписки, эти изменения могут не отражаться немедленно azd. Чтобы устранить эту проблему, выйдите из системы и вернитесь в azd систему с помощью следующих команд:

azd auth logout

azd auth login

Следуйте инструкциям из azd auth login команды, чтобы завершить процесс входа и обновить кэшированные учетные данные.

Ограничения Cloud Shell для azd

В Cloud Shell существуют некоторые ограничения azd :

Поддержка Docker в Cloud Shell

Cloud Shell не поддерживает выполнение docker build или run команд, так как управляющая программа Docker не запущена. Дополнительные сведения см. в разделе "Устранение неполадок Cloud Shell".

Время ожидания Cloud Shell

Cloud Shell может истекать во время длительного развертывания или других длительных задач. Убедитесь, что сеанс не становится неактивным. См . ограничения использования Cloud Shell.

Интерфейс Cloud Shell

Cloud Shell является главным образом интерфейсом командной строки и будет иметь меньше функций, чем интегрированная среда разработки, например Visual Studio Code.

Не удается подключиться к управляющей программе Docker в Cloud Shell

Cloud Shell использует контейнер для размещения среды оболочки, поэтому задачи, требующие запуска управляющей программы Docker, не допускаются.

Установка другой версии azd в Cloud Shell

В некоторых случаях может потребоваться установить другую версию azd , чем версия, уже используемая в Cloud Shell. Для этого в bash выполните указанные ниже действия.

  1. Выполните команду mkdir -p ~/bin , чтобы убедиться, что папка ~/bin присутствует
  2. Запустите mkdir -p ~/azd , чтобы убедиться, что локальная ~/azd папка присутствует
  3. Run curl -fsSL https://aka.ms/install-azd.sh | bash -s -- --install-folder ~/azd --symlink-folder ~/bin --version <version> (<version> будет по stable умолчанию, но определенная выпущенная версия, например 1.0.0 , может быть указана).

После установки версия символьного связывания azd~/bin будет иметь приоритет над версией символьно связаннойazd./usr/local/bin

Чтобы отменить изменения использовать уже установленную версию azd Cloud Shell в bash:

  1. Выполнить rm ~/bin/azd
  2. Выполнить rm -rf ~/azd

Решение

Используйте другой узел для выполнения задач, требующих управляющей программы Docker. Один из вариантов — использовать docker-machine, как описано в документации по устранению неполадок Cloud Shell.

Требование интерфейса командной строки Azure Bicep

azd up и azd provision требуется последний выпуск Azure Bicep CLI. Вы можете получить следующее сообщение об ошибке: "Ошибка: не удалось скомпилировать шаблон bicep: сбой выполнения сборки модуля Az PowerShell bicep: 1, stdout: , stderr: ПРЕДУПРЕЖДЕНИЕ: новый выпуск Bicep доступен: v0.4.1272".

Решение

Ранее Bicep был предварительным параметром для установки и использования azd . azdтеперь автоматически устанавливает Bicep в локальном azd область (не глобально), и эта проблема должна быть устранена. Однако если вы хотите использовать другую версию, можно задать переменную среды: AZD_BICEP_TOOL_PATH чтобы указать расположение нужной версии.

azd up или azd provision завершается сбоем

Вещи иногда могут идти ужасно с azd up или azd provision. Ниже перечислены распространенные ошибки.

  • "Не удается подготовить определенные ресурсы в регионе Azure, так как регион не имеет емкости".
  • "Соответствующий поставщик ресурсов не присутствует в этом регионе".

Действия по устранению неполадок могут отличаться в зависимости от первопричины.

Решение

  1. Переход на портал Azure.

  2. Найдите группу ресурсов, которая является rg-your-environment-name<>.

  3. Выберите развертывания, чтобы получить дополнительные сведения.

  4. Убедитесь, что вы указали имя среды, совпадающее с именем среды.

  5. https://github.com/<your repo>/actionsПерейдите к файлу журнала в конвейере, чтобы получить дополнительные сведения.

Сведения о других ресурсах см. в статье "Устранение распространенных ошибок развертывания Azure— Azure Resource Manager".

Для azd init требуется sudo.

Прежде чем azd version = azure-dev-cli_0.2.0-beta.1создать папку с drw-r--r-- доступом.azd. azd

Это приведет к проблеме, так как при использовании этой или любой предыдущей версии в любой настройке Linux (WSL, ssh-remote, devcontainer и т. д.) уже предоставляет папку с режимом .azd только для чтения.

Решение

  1. Вручную удалите уже указанную .azd папку:

    rm -r ~/.azd
    
  2. azd Запуститеazd init, чтобы создать папку еще раз с правильными уровнями доступа.

azd monitor контейнер разработки

azd monitor В настоящее время не поддерживается, если в качестве среды разработки используется контейнер разработки.

Не удается выполнить проверку подлинности в средах Codespaces

Если у вас возникли проблемы с проверкой подлинности в codespaces, убедитесь, что шаблон Dockerfile содержит sudo apt-get update && sudo apt-get install xdg-utils команды. Команда xdg-utils откроет вкладку браузера, которая позволяет выполнить вход.

Статические веб-приложения не удается развернуть, несмотря на сообщение об успешном выполнении

Известная проблема существует при развертывании в Статические веб-приложения Azure, в которой выходные данные по умолчанию могут привести к успешному выполнению azd up действия, но изменения не были развернуты. Эту проблему можно диагностировать, выполнив azd up команду с включенным флагом --debug . В выходных журналах может отображаться следующее сообщение:

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

Скорее всего, эта проблема возникает при azd запуске из действия GitHub. В качестве обходного решения после сборки сайта скопируйте staticwebapp.config.json его в папку сборки. Этот шаг можно автоматизировать с помощью перехватчика или перехватчика команд predeploy, что позволяет выполнять пользовательские скрипты в различных точках в рабочих процессах команды azd.

Команда разработчиков работает над решением этой проблемы.

Ошибка GitHub Actions — "У секретов нет разрешения на получение разрешения на хранилище ключей"

Совместное использование одного и того же имени среды или группы ресурсов при локальной подготовке ресурсов и в GitHub Actions может привести к ошибке Does not have secrets get permission on key vault.. из службы Key Vault. Key Vault не поддерживает добавочные обновления разрешений через Bicep, что фактически означает, что рабочий процесс GitHub Actions перезаписывает разрешения политики доступа локального пользователя.

Рекомендуемое решение этой проблемы — использовать отдельные имена сред для локальных рабочих процессов разработки и GitHub Actions. Дополнительные сведения об использовании нескольких сред с командой azd env на странице часто задаваемых вопросов.

Поддержка браузера на основе текста

Текстовые браузеры в настоящее время не поддерживаются azd monitor.

azd pipeline config использование шаблонов AzDo для Java в Windows

При запуске azd pipeline config с шаблонами AzDo для Java в Windows может возникнуть сбой. Например, вы:

  1. Выполните следующие действия в Windows:

    azd init --template Azure-Samples/todo-java-mongo
    azd pipeline config
    
  2. Получено следующее сообщение об ошибке:

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

Решение

Это известная проблема. При устранении этой проблемы попробуйте выполнить следующую команду:

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 сбой azd после обновления в Apple Silicon (M1/M2)

В некоторых ситуациях обновление с x86_64 версии azd до двоичного файла ARM64 может привести к сбоям шаблонов, созданных с x86_64 версией azd. Это связано с тем, что шаблон использует версию v8-compile-cache , которая может попытаться загрузить байт-код, встроенный в x86_64 в процесс ARM64.

Чтобы устранить эту проблему, обновите v8-compile-cache пакет в затронутом проекте:

  1. Измените каталог на службу, которая завершилась сбоем (src/api в случае failed packaging service 'api')
  2. Выполнить npm upgrade v8-compile-cache
  3. Измените каталог на корневой каталог репозитория и выполните azd команду (например azd package , или azd up) снова

azd pipeline config сбой из-за политики условного доступа

При выполнении azd pipeline configможет появиться сообщение об ошибке, как показано ниже.

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

Эта ошибка связана с включением политик условного доступа в клиенте Microsoft Entra. Для конкретной политики требуется, чтобы вы вошли в поддерживаемую платформу устройств.

Вы также можете получить эту ошибку из-за входа в систему с помощью механизма кода устройства, что препятствует правильному обнаружению идентификатора Microsoft Entra.

Решение

Чтобы настроить рабочий процесс, вам нужно предоставить GitHub разрешение на развертывание в Azure от вашего имени. Авторизация GitHub путем создания субъекта-службы Azure, хранящегося в секрете GitHub с именем AZURE_CREDENTIALS. Выберите узел Codespace для шагов:

  1. Убедитесь, что вы работаете на устройстве, указанном как поддерживаемое, в сообщении об ошибке.

  2. Повторно выполните команду azd auth login с добавленным флагом --use-device-code=false :

    azd auth login --use-device-code=false
    
  3. После входа в систему может появиться сообщение об localhost refused to connect ошибке. Если так:

    1. Скопируйте URL-адрес.
    2. Запустите curl '<pasted url>' (URL-адрес в кавычках) в новом терминале Codespaces.

    В исходном терминале имя входа должно завершиться успешно.

  4. После входа повторно выполните команду azd pipeline config.