Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Категории ошибок
Большинство ошибок, возвращаемых Azure CLI, входят в одну из следующих категорий:
| Категория ошибки | Причина общей ошибки |
|---|---|
| Нераспознанный аргумент | Параметр не указан или не существует. |
| Отсутствующий обязательный аргумент | Обязательный параметр не указан или указана только одна из двух пар параметров. Параметр также может быть неправильно написан. |
| Взаимоисключающий аргумент | Невозможно указать два или более параметров. |
| Недопустимое значение аргумента | Значение параметра недопустимо. Эта ошибка часто возникает из-за кавыка, escape-символа или интервала. |
| Недопустимый запрос | Код состояния HTTP 400 возвращает эту ошибку. Проверьте отсутствие пробела, отсутствующий дефис для параметра или дополнительную или отсутствующую одинарную или двойную кавычку. Эта ошибка также возникает, если значение параметра не содержит допустимое значение. |
| Ресурс не найден | Ресурс Azure, на который ссылается значение параметра, не найден. |
| Аутентификация | Сбой проверки подлинности Microsoft Entra. |
Параметр отладки
Одним из лучших способов узнать, что выполняет Azure CLI для каждой эталонной команды, является использование --debug параметра. Ниже приведены примеры --debug неудачной и успешной команды:
# Error example: Create a resource group, but omit the quotes around the resource group name.
az group create --location eastus2 --name msdocs-rg-test --debug
Ниже приведена часть выходных данных отладки. Обратите внимание на расположение журнала логов и нераспознанный аргумент.
cli.knack.cli: Command arguments: ['group', 'create', '-l', 'eastus2', '-name', 'msdocs-rg-test', '--debug']
...
cli.azure.cli.core.azlogging: metadata file logging enabled - writing logs to '/home/myName/.azure/commands/YYYY-MM-DD.HH-MM-SS.group_create.8912.log'.
...
cli.azure.cli.core.azclierror: unrecognized arguments: msdocs-rg-test
...
Сравните выходные данные ошибок --debug , указанные в предыдущем примере, с успешным выполнением:
# Correct example: Because the resource group name contains special characters, enclose it in quotes
az group create --location eastus2 --name "msdocs-rg-test" --debug
Ниже приведена часть выходных данных отладки. Обратите внимание на расположение журнала, вызов API и время выполнения.
cli.knack.cli: Command arguments: ['group', 'create', '-l', 'eastus2', '-n', 'msdocs-rg-test', '--debug']
...
cli.azure.cli.core.azlogging: metadata file logging enabled - writing logs to '/home/myName/.azure/commands/YYYY-MM-DD.HH-MM-SS.group_create.8912.log'.
...
cli.azure.cli.core.sdk.policies: Request URL: 'https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/msdocs-rg-test?api-version=YYYY-MM-DD'
cli.azure.cli.core.sdk.policies: Request method: 'PUT'
cli.azure.cli.core.sdk.policies: Request headers:
cli.azure.cli.core.sdk.policies: 'Content-Type': 'application/json'
cli.azure.cli.core.sdk.policies: 'Content-Length': '23'
cli.azure.cli.core.sdk.policies: 'Accept': 'application/json'
cli.azure.cli.core.sdk.policies: 'x-ms-client-request-id': 'ba7ee6f4-2dcc-11ef-81ce-00155dadc5c8'
cli.azure.cli.core.sdk.policies: 'CommandName': 'group create'
cli.azure.cli.core.sdk.policies: 'ParameterSetName': '-l -n --debug'
cli.azure.cli.core.sdk.policies: 'User-Agent': 'AZURECLI/2.61.0 (RPM) azsdk-python-core/1.28.0 Python/3.9.19 (Linux-5.10.102.2-microsoft-standard-x86_64-with-glibc2.35) cloud-shell/1.0'
cli.azure.cli.core.sdk.policies: 'Authorization': '*****'
cli.azure.cli.core.sdk.policies: Request body:
cli.azure.cli.core.sdk.policies: {"location": "eastus2"}
urllib3.connectionpool: Starting new HTTPS connection (1): management.azure.com:443
urllib3.connectionpool: https://management.azure.com:443 "PUT /subscriptions/3618afcd-ea52-4ceb-bb46-53bb962d4e0b/resourcegroups/msdocs-rg-test?api-version=2022-09-01 HTTP/1.1" 201 226
cli.azure.cli.core.sdk.policies: Response status: 201
...
cli.azure.cli.core.sdk.policies: 'Date': 'Tue, 18 Jun 2024 23:44:41 GMT'
cli.azure.cli.core.sdk.policies: Response content:
cli.azure.cli.core.sdk.policies: {"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/msdocs-rg-test","name":"msdocs-rg-test","type":"Microsoft.Resources/resourceGroups","location":"eastus2","properties":{"provisioningState":"Succeeded"}}
...
cli.__main__: Command ran in 1.829 seconds (init: 0.111, invoke: 1.718)
См. примеры --debug форматирования JSON в разделе «Различия между языками сценариев — строками JSON».
Распространенные синтаксические ошибки
Хотя Azure CLI может выполняться в Bash, PowerShell и командной строке Windows (cmd.exe), существуют различия синтаксиса между языками сценариев. Скрипты Azure CLI, содержащие одинарные кавычки, двойные кавычки и escape-символы, часто требуют изменения при копировании между языками. Эта проблема чаще всего обнаруживается в значениях параметров, особенно в тех, которые назначены параметру --query . Ниже приведены некоторые распространенные сообщения об ошибках:
Неверный запрос ... {что-то} недопустимо: эта ошибка может быть вызвана пробелом, одинарной или двойной кавычкой, или отсутствием кавычек.
Непредвиденный токен...: эта ошибка возникает при наличии дополнительного пробела или кавычки.
Недопустимое значение jmespath_type: эта ошибка часто возникает из-за неправильных кавычек в параметре
--query.Ссылка на переменную недопустима: эта ошибка возникает, если строка не отформатирована должным образом, часто из-за конкатенации или отсутствия escape-символов.
Нераспознанные аргументы: эта ошибка часто вызвана ошибочным символом продолжения строки или именем параметра с ошибкой в написании.
Отсутствует выражение после унарного оператора: эта ошибка возникает, когда отсутствует символ продолжения строки.
Существует несколько статей Azure CLI, посвященных объяснению синтаксических ошибок и предоставлению рабочих примеров.
- Цитирование различий между языками сценариев
- Различия синтаксиса в руководстве по Bash, PowerShell и Cmd
- Найдите много
--queryпримеров параметров в руководстве по запросу результатов команд Azure CLI с использованием запроса JMESPath - Практическое руководство по использованию Azure CLI на языке сценариев Bash
- Рекомендации по запуску Azure CLI на языке сценариев PowerShell
Подсказка
Если не удается устранить ошибку команды, попробуйте использовать другой язык сценариев. Большая часть документации по Azure CLI написана и протестирована в Azure Cloud Shell, которая использует язык сценариев Bash. Если вы можете получить пример статьи для выполнения в Bash, но он не выполняется в PowerShell, просмотрите использование одиночных и двойных кавычки и escape-символов.
Устранение неполадок многофакторной проверки подлинности (MFA)
Сбои интерактивного входа
Если при выполнении команд Azure CLI возникают ошибки, которые создают, изменяют или удаляют ресурсы, проблема может быть вызвана политикой условного доступа Microsoft Entra ID, требующей многофакторной проверки подлинности (MFA).
Эти ошибки обычно возникают, когда MFA требуется политикой, но не применяется во время входа.
Ресурс был запрещен политикой
При использовании может появиться одна из следующих ошибок:
- Azure CLI версии 2.75.0 или более ранней версии
Due to a configuration change made by your administrator, or because you moved to a new location,
you must enroll in multi-factor authentication. Interactive authentication is needed.
Или:
Resource was disallowed by policy. Reasons: MFA is required. See error details for policy resource
IDs. RequestDisallowedByPolicy Message: Resource policy resource IDs was disallowed by policy.
Reasons: MFA is required.
Или:
Unauthorized. RequestDisallowedByPolicy. Resource was disallowed by policy. Reasons: MFA is
required. See error details for policy resource IDs. MFA is required. Users must authenticate with
multi-factor authentication to create or update resources.
Обновите до следующих версий или более поздних версий, чтобы получить более информативные сообщения об ошибках и сведения о политике:
- Azure CLI версии 2.76.0 или более поздней
Следующая ошибка возникает в Azure CLI 2.76.0+, где MFA требуется условным доступом для определенных операций.
Run the command below to authenticate interactively; additional arguments may be added as needed:
az logout
az login --tenant "aaaabbbb-0000-cccc-1111-dddd2222eeee" --scope "https://management.core.windows.net//.default" --claims-challenge "<claims-challenge-token>"
(RequestDisallowedByPolicy) Resource was disallowed by policy. Policy identifiers. Users must use
MFA for Create/Update operations. Users must authenticate with multi-factor authentication to create
or update resources. Users must use MFA for Create operation. Users must authenticate with
multi-factor authentication to create or update resources. Users must use MFA for Create/Update
operations. Users must authenticate with multi-factor authentication to create or update resources.
Users must use MFA for Create operation. Users must authenticate with multi-factor authentication to
create or update resources.
Параметры разрешения
Попросите администратора Azure применить MFA при входе. Это позволяет сеансу соответствовать требованиям условного доступа без дополнительных действий.
Если принудительное применение MFA при входе невозможно, используйте
--claims-challengeпараметр для интерактивной проверки подлинности:az logout az login --tenant "aaaabbbb-0000-cccc-1111-dddd2222eeee" --scope "https://management.core.windows.net//.default" --claims-challenge "<claims-challenge-token>"
Дополнительные сведения см. в статье "Планирование обязательной многофакторной проверки подлинности для Azure" и других порталов администрирования
Сбой загрузки DLL при импорте win32file
При попытке использовать Azure CLI может возникнуть следующая ошибка:
DLL load failed while importing win32file: The specified module could not be found.
The command failed with an unexpected error. Here is the traceback:
DLL load failed while importing win32file: The specified module could not be found.
Traceback (most recent call last):
File "<frozen runpy>", line 198, in _run_module_as_main
File "<frozen runpy>", line 88, in _run_code
File "D:\a\_work\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/__main__.py", line 13, in <module>
File "D:\a\_work\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/telemetry.py", line 19, in <module>
File "D:\a\_work\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/telemetry/__init__.py", line 9, in <module>
File "D:\a\_work\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\portalocker/__init__.py", line 4, in <module>
File "D:\a\_work\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\portalocker/portalocker.py", line 11, in <module>
ImportError: DLL load failed while importing win32file: The specified module could not be found.
PS C:\Users\dsevilla>
Эта проблема может возникнуть из-за поврежденной установки. Чтобы устранить проблему, выполните следующие действия.
- Удалите Azure CLI.
- Переустановите Azure CLI с помощью предпочтительного метода установки.
Дополнительные сведения см. в статье о проблеме GitHub #32045.
Ошибка: недопустимое значение или значения не существует
Эти ошибки часто возникают при попытке использовать значения переменных, содержащие неправильный формат. Форматом выходных данных по умолчанию для Azure CLI является JSON. Если вы пытаетесь сохранить идентификатор ресурса Azure в переменной, необходимо указать --output tsv. Ниже приведен пример:
# Get a subscription that contains a name or phrase
subscriptionID=$(az account list --query "[?contains(name,'my case sensitive search phrase')].id")
echo $subscriptionID
# output as JSON
[ "00000000-0000-0000-0000-000000000000" ]
# Try to set your subscription to the new ID
az account set --subscription $subscriptionID
# error output
The subscription of '"00000000-0000-0000-0000-000000000000"' doesn't exist in cloud 'AzureCloud'.
Теперь используйте тип выходных данных tsv.
# Get the active subscription
subscriptionID=$(az account list --query "[?contains(name,'my case sensitive search phrase')].id" --output tsv)
echo $subscriptionID
# output as TSV
00000000-0000-0000-0000-000000000000
# Successfully set your subscription to the new ID
az account set --subscription $subscriptionID
Ошибка: аргументы ожидаются или требуются
Эта ошибка возникает, когда отсутствует обязательный параметр для команды Azure CLI либо присутствует типографическая ошибка, которая приводит к неправильному анализу ссылочной команды. При работе со скриптом эта ошибка также возникает, если выполняется одно или несколько условий.
- Символ продолжения строки отсутствует или неправилен.
- Пробел существует в правой части символа продолжения строки при работе на языке сценариев PowerShell. PowerShell поддерживает splatting только с массивами, а не с хэш-таблицами в командах Azure CLI.
- Имя переменной содержит специальный символ, например тире (-).
Ошибка: ресурс не найден
Если Azure CLI не может найти имя ресурса или идентификатор, переданный в значение параметра, обычно это связано с одной из следующих причин:
- Имя ресурса или идентификатор написаны неправильно.
- Имя ресурса содержит специальные символы и не окружено одними или двойными кавычками.
- Значение, передаваемое переменной, имеет незамеченные начальные или конечные пробелы.
- Ресурс существует, но находится в другой подписке.
Ошибка: не удалось проанализировать строку в формате JSON
Существуют различия между Bash, PowerShell в Linux и PowerShell в Windows.
Кроме того, различные версии PowerShell могут создавать различные результаты. Для сложных параметров, таких как строка JSON, рекомендуется использовать соглашение Azure CLI @<file> для обхода интерпретации оболочки. Дополнительные сведения см. в одной из следующих статей:
Для примеров синтаксиса JSON для Bash, PowerShell и cmd.exe, см. учебник Отличия цитирования в языках сценариев - строки JSON.
Ошибка: InvalidTemplateDeployment
При попытке создать ресурс Azure в расположении, которое не предлагает этот ресурс, вы получите сообщение об ошибке, похожее на следующее: "Следующие SKU невозможны из-за ограничений по мощности: myDesiredSkuName в настоящее время недоступна в расположении mySpecifiedLocation".
Ниже приведен полный пример ошибки для виртуальной машины, которая не может быть создана в расположении westus :
{"error":{"code":"InvalidTemplateDeployment","message":"The template deployment 'vm_deploy_<32 character ID>'
is not valid according to the validation procedure. The tracking id is '<36 character ID>'.
See inner errors for details.","details":[{"code":"SkuNotAvailable","message":"The requested VM size for resource
'Following SKUs have failed for Capacity Restrictions: Standard_DS1_v2' is currently not available
in location 'westus'. Please try another size or deploy to a different location
or different zone. See https://aka.ms/azureskunotavailable for details."}]}}
Решение — изменить свойство запрошенного ресурса Azure или попробовать другое расположение.
Ошибка: подписка не найдена
Если вы не ввели имя подписки или идентификатор неправильно, эта ошибка возникает, когда поставщик ресурсов не зарегистрирован в активной подписке. Например, если требуется выполнить az storage account create, Microsoft.Storage поставщик должен быть зарегистрирован. Для регистрации поставщика ресурсов см. раздел поставщики ресурсов Azure и их типы.
Ошибка: неверный рукопожатие, сбой подтверждения сертификата
См. Работу через прокси-сервер для получения информации о том, как устранить эту ошибку.
Работа через прокси-сервер
Если вы используете Azure CLI на прокси-сервере, использующего самозаверяющие сертификаты, библиотека запросов Python запрашивает, используемую Azure CLI, может привести к следующей ошибке: SSLError("bad handshake: Error([('SSL routines', 'tls_process_server_certificate', 'certificate verify failed')],)",).
Чтобы устранить эту ошибку, задайте переменной REQUESTS_CA_BUNDLE среды путь к файлу сертификата пакета ЦС в формате PEM.
| ОС | Пакет сертификатов центра сертификации по умолчанию |
|---|---|
| Windows 32-разрядная версия | C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2\Lib\site-packages\certifi\cacert.pem |
| Windows 64-разрядная версия | C:\Program Files\Microsoft SDKs\Azure\CLI2\Lib\site-packages\certifi\cacert.pem |
| Ubuntu/Debian Linux | /opt/az/lib/python<version>/site-packages/certifi/cacert.pem |
| CentOS Stream/RHEL/SUSE Linux | /usr/lib64/az/lib/python<version>/site-packages/certifi/cacert.pem |
| macOS | Модели Intel: /usr/local/Cellar/azure-cli/<cliversion>/libexec/lib/python<version>/site-packages/certifi/cacert.pem Модели кремния: /opt/homebrew/Cellar/azure-cli/<cliversion>/libexec/lib/python<version>/site-packages/certifi/cacert.pem |
Добавьте сертификат прокси-сервера в файл сертификата пакета ЦС или скопируйте его содержимое в другой файл сертификата. Затем установите REQUESTS_CA_BUNDLE на новое расположение файла. Ниже приведен пример:
<Original cacert.pem>
-----BEGIN CERTIFICATE-----
<Your proxy's certificate here>
-----END CERTIFICATE-----
Для некоторых прокси-серверов требуется проверка подлинности. Формат переменных среды HTTP_PROXY или HTTPS_PROXY должен включать аутентификацию, подобно HTTPS_PROXY="https://username:password@proxy-server:port". Дополнительные сведения см. в статье "Настройка прокси-серверов для пакета SDK Azure для Python".
Сервисные принципы
Сведения об устранении неполадок учетных записей службы см. в разделе Очистка и устранение неполадок в руководстве Работа с учетными записями службы.
Другие проблемы
Если у вас возникла проблема с продуктом Azure CLI, не указанная в этой статье, сообщите о проблеме на GitHub.