Sdílet prostřednictvím


Řešení potíží s Azure CLI

Kategorie chyb

Většina chyb vrácených Azure CLI spadá do jedné z těchto kategorií:

Kategorie chyby Obecná příčina chyby
Nerozpoznaný argument Parametr je chybně napsaný nebo neexistuje.
Chybí požadovaný argument. Povinný parametr není zadán nebo je zadán pouze jeden ze dvou párů parametrů. Parametr může být také chybně napsaný.
Vzájemně se vylučující argument Dva nebo více parametrů nelze zadat společně.
Neplatná hodnota argumentu Hodnota parametru není platná. Tato chyba je často způsobena uvozováním, únikovým znakem nebo mezerou.
Chybný požadavek Stavový kód HTTP 400 vrátí tuto chybu. Zkontrolujte chybějící mezeru, chybějící pomlčku u parametru nebo nadbytečnou nebo chybějící jednoduchou nebo dvojitou uvozovku. K této chybě dochází také v případě, že hodnota parametru neobsahuje povolenou hodnotu.
Prostředek nebyl nalezen. Nelze nalézt prostředek Azure, na který je odkazováno v hodnotě parametru.
Autentizace Ověření Microsoft Entra se nezdařilo.

Parametr ladění

Jedním z nejlepších způsobů, jak zjistit, co Azure CLI spouští pro každý referenční příkaz, je použít --debug parametr. Tady jsou příklady neúspěšného i úspěšného --debug příkazu:

# 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

Tady je část ladicího výstupu. Všimněte si umístění protokolu a nerozpoznaný argument.

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
...

Porovnejte výstup chyby --debug uvedený v předchozím příkladu s úspěšným spuštěním:

# Correct example: Because the resource group name contains special characters, enclose it in quotes
az group create --location eastus2 --name "msdocs-rg-test" --debug

Tady je část ladicího výstupu. Všimněte si umístění protokolu, volání rozhraní API a doba běhu.

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)

Příklady --debug pro JSON formátování najdete v části Rozdíly mezi skriptovacími jazyky – JSON řetězce.

Běžné chyby syntaxe

I když azure CLI může běžet v prostředí Bash, PowerShellu a příkazovém řádku Windows (cmd.exe), mezi skriptovacími jazyky existují rozdíly v syntaxi. Skripty Azure CLI obsahující jednoduché uvozovky, dvojité uvozovky a řídicí znaky často vyžadují úpravy při kopírování mezi jazyky. Tento problém se nejčastěji projevuje v hodnotách parametrů, zejména v těch, které jsou k parametru --query přiřazeny. Tady je několik běžných chybových zpráv:

  • Chybný požadavek ... {something} je neplatný: Příčinou této chyby může být mezera, jednoduchá nebo dvojitá uvozovka nebo nedostatek uvozovek.

  • Neočekávaný token...: Tato chyba se zobrazí, když je přítomno nadbytečné místo nebo uvozovka.

  • Neplatná hodnota jmespath_type: Tato chyba často pochází z nesprávného uvozovek v parametru --query .

  • Odkaz na proměnnou není platný: Tato chyba se zobrazí, pokud řetězec není správně naformátován, často kvůli zřetězení nebo chybějící escape sekvenci.

  • Nerozpoznané argumenty: Tato chyba je často způsobena nesprávným znakem pokračování řádku nebo chybně napsaným názvem parametru.

  • Chybějící výraz za unárním operátorem: Tato chyba se zobrazí, když chybí znak pokračování řádku.

Existuje několik článků Azure CLI věnovaných vysvětlení chyb syntaxe a poskytování pracovních příkladů:

Návod

Pokud nemůžete chybu příkazu vyřešit, zkuste použít jiný skriptovací jazyk. Většina dokumentace k Azure CLI je napsaná a otestovaná ve službě Azure Cloud Shell, která používá skriptovací jazyk Bash. Pokud můžete získat příklad článku pro spuštění v Bash, ale nespustí se v PowerShellu, zkontrolujte použití jednoduchých a dvojitých uvozovek a řídicích znaků.

Řešení potíží s vícefaktorovým ověřováním (MFA)

Selhání interaktivního přihlášení

Pokud při spouštění příkazů Azure CLI, které vytvářejí, upravují nebo odstraňují prostředky, může být problém způsobený zásadami podmíněného přístupu Microsoft Entra ID, které vyžadují vícefaktorové ověřování (MFA).

K těmto chybám obvykle dochází v případě, že zásady vyžadují vícefaktorové ověřování, ale během přihlášení se nevynucují.

Prostředek se nepovolil podle zásad

Při použití se může zobrazit jedna z následujících chyb:

  • Azure CLI verze 2.75.0 nebo starší
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.

Nebo:

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.

Nebo:

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.

Upgradujte na následující verze nebo novější, abyste dostávali informativnější chybové zprávy a podrobnosti o zásadách:

  • Azure CLI verze 2.76.0 nebo novější

K následující chybě dochází v Azure CLI 2.76.0+, kde podmíněný přístup vyžaduje vícefaktorové ověřování pro konkrétní operace.

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.

Možnosti řešení

  • Požádejte správce Azure, aby při přihlášení vynucil vícefaktorové ověřování. To umožňuje relaci splnit požadavky podmíněného přístupu bez dalších kroků.

  • Pokud vynucování vícefaktorového ověřování při přihlášení není možné, použijte tento --claims-challenge parametr k interaktivnímu ověření:

    az logout
    az login --tenant "aaaabbbb-0000-cccc-1111-dddd2222eeee" --scope "https://management.core.windows.net//.default" --claims-challenge "<claims-challenge-token>"
    

Další informace najdete v tématu Plánování povinného vícefaktorového ověřování pro Azure a další portály pro správu.

Načtení knihovny DLL při importu souboru win32 se nezdařilo.

Při pokusu o použití Azure CLI se může zobrazit následující chyba:

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>

K tomuto problému může dojít kvůli poškozené instalaci. Řešení problému:

  1. Odinstalujte Azure CLI.
  2. Přeinstalujte Azure CLI pomocí preferované metody instalace.

Další informace najdete v tématu Problém GitHubu č. 32045.

Chyba: Neplatná hodnota nebo neexistuje

K těmto chybám často dochází při pokusu o použití hodnot proměnných, které obsahují nesprávný formát. Výchozí výstup pro Azure CLI je JSON. Pokud se pokoušíte uložit ID prostředku Azure do proměnné, musíte zadat --output tsv. Tady je příklad:

# 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'.

Teď použijte tsv výstupní typ.

# 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

Chyba: Argumenty jsou očekávané nebo povinné

Tato chyba se zobrazí, když příkaz Azure CLI chybí požadovaný parametr nebo dojde k typografické chybě, která způsobí, že Azure CLI nesprávně parsuje referenční příkaz. Při práci se skriptem se také zobrazí tato chyba, pokud platí jedna nebo více podmínek:

  • Znak pokračování řádku chybí nebo není správný.
  • Při práci ve skriptovacím jazyce PowerShell je na pravé straně znaku pokračování řádku mezera. PowerShell splatting je podporováno pouze s poli, nikoli s hash tabulkami při použití příkazů Azure CLI.
  • Název proměnné obsahuje speciální znak, například pomlčku (-).

Chyba: Prostředek nebyl nalezen.

Pokud Azure CLI nemůže najít název nebo ID prostředku předané v hodnotě parametru, důvodem je obvykle jeden z těchto důvodů:

  • Název nebo ID prostředku je nesprávně napsané.
  • Název prostředku obsahuje speciální znaky a není obklopen jednoduchými nebo dvojitými uvozovkami.
  • Hodnota předaná proměnné má neviditelné úvodní nebo koncové mezery.
  • Prostředek existuje, ale je v jiném předplatném.

Chyba: Nepodařilo se analyzovat řetězec ve formátu JSON

Rozdíly v používání uvozovek existují mezi Bashem, PowerShellem v Linuxu a PowerShellem ve Windows. Kromě toho můžou různé verze PowerShellu vést k různým výsledkům. Osvědčeným postupem pro komplexní parametry, jako je řetězec JSON, je použití konvence Azure CLI @<file> k obejití interpretace prostředí. Další informace najdete v jednom z těchto článků:

Pro příklady syntaxe JSON pro Bash, PowerShell a cmd.exe, podívejte se na tutoriál Rozdíly v citacích mezi skriptovacími jazyky - Řetězce JSON.

Chyba: Neplatné nasazení šablony

Při pokusu o vytvoření prostředku Azure v umístění, které tento prostředek nenabízí, se zobrazí chyba podobná této zprávě: Následující skladové položky selhaly pro omezení kapacity: myDesiredSkuName není aktuálně k dispozici v umístění mySpecifiedLocation.

Tady je úplný příklad chyby pro virtuální počítač, který nejde vytvořit v westus umístění:

{"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."}]}}

Řešením je změnit vlastnost požadovaného prostředku Azure nebo vyzkoušet jiné umístění.

Chyba: Odběr nebyl nalezen.

Za předpokladu, že jste nesprávně nezadali název nebo ID předplatného, dojde k této chybě v případě, že poskytovatel prostředků není zaregistrovaný v aktivním předplatném. Pokud například chcete spustit az storage account create, poskytovatel Microsoft.Storage musí být zaregistrovaný. Pro registraci poskytovatele prostředků si prohlédněte poskytovatele prostředků Azure a typy.

Chyba: Ověření chybného certifikátu handshake selhalo

Informace o řešení této chyby najdete v části Práce za proxy serverem .

Práce za proxy serverem

Pokud používáte Azure CLI přes proxy server, který používá certifikáty podepsané svým držitelem, může knihovna požadavků Pythonu používaná Azure CLI způsobit následující chybu: SSLError("bad handshake: Error([('SSL routines', 'tls_process_server_certificate', 'certificate verify failed')],)",) Pokud chcete tuto chybu vyřešit, nastavte proměnnou REQUESTS_CA_BUNDLE prostředí na cestu k souboru certifikátu certifikační autority ve formátu PEM.

operační systém Výchozí balík certifikační autority
Windows 32bitová verze C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2\Lib\site-packages\certifi\cacert.pem
Windows 64bitová verze 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 Modely Intel: /usr/local/Cellar/azure-cli/<cliversion>/libexec/lib/python<version>/site-packages/certifi/cacert.pem

Silikonové modely: /opt/homebrew/Cellar/azure-cli/<cliversion>/libexec/lib/python<version>/site-packages/certifi/cacert.pem

Připojte certifikát proxy serveru k souboru certifikátu certifikační autority nebo zkopírujte obsah do jiného souboru certifikátu. Pak nastavte REQUESTS_CA_BUNDLE na nové umístění souboru. Tady je příklad:

<Original cacert.pem>

-----BEGIN CERTIFICATE-----
<Your proxy's certificate here>
-----END CERTIFICATE-----

Některé proxy servery vyžadují ověření. Formát proměnných prostředí HTTP_PROXY nebo HTTPS_PROXY by měl zahrnovat ověřovací údaje, například HTTPS_PROXY="https://username:password@proxy-server:port". Podrobnosti najdete v tématu Postup konfigurace proxy pro sadu Azure SDK pro Python.

Principály služby

Informace o řešení potíží s instančními objekty zabezpečení najdete v části Vyčištění a Řešení potíží v kurzu Práce s instančními objekty zabezpečení.

Další problémy

Pokud narazíte na problém s produktem Azure CLI, který není uveden v tomto článku, nahlaste problém na GitHubu.

Viz také