Устранение неполадок с 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 выполните указанные ниже действия.
- Выполните команду
mkdir -p ~/bin
, чтобы убедиться, что папка~/bin
присутствует - Запустите
mkdir -p ~/azd
, чтобы убедиться, что локальная~/azd
папка присутствует - 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:
- Выполнить
rm ~/bin/azd
- Выполнить
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, так как регион не имеет емкости".
- "Соответствующий поставщик ресурсов не присутствует в этом регионе".
Действия по устранению неполадок могут отличаться в зависимости от первопричины.
Решение
Переход на портал Azure.
Найдите группу ресурсов, которая является rg-your-environment-name<>.
Выберите развертывания, чтобы получить дополнительные сведения.
Убедитесь, что вы указали имя среды, совпадающее с именем среды.
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
только для чтения.
Решение
Вручную удалите уже указанную
.azd
папку:rm -r ~/.azd
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 может возникнуть сбой. Например, вы:
Выполните следующие действия в Windows:
azd init --template Azure-Samples/todo-java-mongo azd pipeline config
Получено следующее сообщение об ошибке:
Решение
Это известная проблема. При устранении этой проблемы попробуйте выполнить следующую команду:
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
пакет в затронутом проекте:
- Измените каталог на службу, которая завершилась сбоем (
src/api
в случаеfailed packaging service 'api'
) - Выполнить
npm upgrade v8-compile-cache
- Измените каталог на корневой каталог репозитория и выполните
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: 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"}
Эта ошибка связана с включением политик условного доступа в клиенте Microsoft Entra. Для конкретной политики требуется, чтобы вы вошли в поддерживаемую платформу устройств.
Вы также можете получить эту ошибку из-за входа в систему с помощью механизма кода устройства, что препятствует правильному обнаружению идентификатора Microsoft Entra.
Решение
Чтобы настроить рабочий процесс, вам нужно предоставить GitHub разрешение на развертывание в Azure от вашего имени. Авторизация GitHub путем создания субъекта-службы Azure, хранящегося в секрете GitHub с именем AZURE_CREDENTIALS
. Выберите узел Codespace для шагов:
Убедитесь, что вы работаете на устройстве, указанном как поддерживаемое, в сообщении об ошибке.
Повторно выполните команду
azd auth login
с добавленным флагом--use-device-code=false
:azd auth login --use-device-code=false
После входа в систему может появиться сообщение об
localhost refused to connect
ошибке. Если так:- Скопируйте URL-адрес.
- Запустите
curl '<pasted url>'
(URL-адрес в кавычках) в новом терминале Codespaces.
В исходном терминале имя входа должно завершиться успешно.
После входа повторно выполните команду
azd pipeline config
.