Megosztás a következőn keresztül:


Az Azure CLI hibaelhárítása

Hibakategóriák

Az Azure CLI által visszaadott hibák többsége az alábbi kategóriák egyikébe tartozik:

Hibakategória Általános hiba oka
Ismeretlen argumentum A paraméter hibásan van beírva, vagy nem létezik.
Hiányzó kötelező argumentum Nincs megadva kötelező paraméter, vagy a két "paraméterpár" közül csak az egyik van megadva. Előfordulhat, hogy egy paraméter hibásan van beírva.
Kölcsönösen kizáró argumentum Két vagy több paraméter nem adható meg együtt.
Érvénytelen argumentumérték A paraméter értéke érvénytelen. Ezt a hibát gyakran idézőjel, feloldó karakter vagy térköz okozza.
Hibás kérés A 400-ból álló HTTP-állapotkód ezt a hibát adja vissza. Ellenőrizze, hogy van-e hiányzó hely, hiányzik-e a paraméterjel, vagy hiányzik-e egy vagy két idézőjel. Ez a hiba akkor is előfordul, ha egy paraméterérték nem tartalmaz engedélyezett értéket.
Az erőforrás nem található Egy paraméterértékben hivatkozott Azure-erőforrás nem található.
Hitelesítés A Microsoft Entra-hitelesítés nem sikerült.

A --debug paraméter

Az azure CLI-referenciaparancsok végrehajtásának egyik legjobb módja a --debug paraméter használata. Íme néhány példa --debug egy sikertelen és egy sikeres parancsra:

# 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

Íme a hibakeresési kimenet egy része. Figyelje meg a napló helyét és a nem felismert argumentumot.

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

Hasonlítsa össze a fent megadott hibakimenetet --debug egy sikeres végrehajtással:

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

Íme a hibakeresési kimenet egy része. Figyelje meg a napló helyét, az API-hívást és a futási időt.

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)

A JSON-formázásra vonatkozó példákért --debug lásd : A szkriptnyelvek – JSON-sztringek közötti különbségek idézése.

Gyakori szintaxishibák

Bár az Azure CLI a Bash, a PowerShell és a Windows Cmd használatával is futtatható, a szkriptnyelvek között szintaktikai különbségek vannak. Az önálló idézőjeleket, dupla idézőjeleket és feloldó karaktereket tartalmazó Azure CLI-szkripteket általában módosítani kell a nyelvek közötti másoláskor. Ez a kihívás leggyakrabban a paraméterértékekben jelenik meg, különösen a --query paraméterhez rendelt értékekben. Íme néhány gyakori hibaüzenet:

  • "Hibás kérés ... {valami} érvénytelen" lehet szóköz, egy- vagy dupla idézőjel, vagy idézőjel hiánya.

  • A "váratlan jogkivonat..." akkor látható, ha van egy extra hely vagy idézet.

  • Az "Érvénytelen jmespath_type érték" hiba gyakran a paraméter helytelen idézéséből --query ered.

  • "Érvénytelen változóhivatkozás" akkor érkezik, ha egy sztring nem megfelelően van formázva összefűzés vagy hiányzó feloldó karakter miatt.

  • A "nem felismert argumentumokat" gyakran helytelen sorfolytatási karakter vagy hibásan írt paraméternév okozza.

  • A "Hiányzó kifejezés a nem szereplő operátor után" kifejezés akkor látható, ha hiányzik egy sor folytatási karaktere.

Számos Azure CLI-cikk foglalkozik a szintaxishibák magyarázatával és gyakorlati példákkal:

Tipp.

Ha nem tudja megoldani a parancshibát, próbálkozzon egy másik szkriptnyelv használatával. A legtöbb Azure CLI-dokumentáció az Azure Cloud Shellben (ACS) van megírva és tesztelve Bash-szkriptelési nyelvvel. Ha az ACS Bashben végrehajtható egy cikket, de a Windows PowerShellben nem hajtja végre, tekintse át az egyszeres és dupla idézőjelek használatát, valamint a feloldó karaktereket.

Hiba: Érvénytelen érték vagy nem létezik

Ezek a hibák gyakran akkor fordulnak elő, ha helytelen formátumot tartalmazó változóértéket próbálnak használni. Az Azure CLI alapértelmezett kimenete a JSON, ezért ha egy Azure-erőforrás azonosítóját egy változóban szeretné tárolni, meg kell adnia --output tsv. Példa:

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

Most használja a tsv kimeneti típust.

# 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

Hiba: Argumentumok várhatók vagy szükségesek

Ez a hiba akkor jelenik meg, ha egy Azure CLI-parancs hiányzik egy szükséges paraméterből, vagy egy tipográfiai hiba miatt az Azure CLI helytelenül elemzi a referenciaparancsot. Szkript használata esetén ez a hiba akkor is jelentkezik, ha egy vagy több feltétel teljesül:

  • Hiányzik vagy helytelen egy sor folytatási karaktere.
  • A PowerShell-szkriptnyelv használata esetén a sor folytatásának karakterének jobb oldalán egy záró szóköz található. Az Azure CLI-parancsok jelenleg nem támogatják a splatting használatát.
  • A változónevek speciális karaktert, például kötőjelet (-) tartalmaznak.

Hiba: Az erőforrás nem található

Ha az Azure CLI nem találja a paraméterértékben átadott erőforrásnevet vagy azonosítót, annak oka általában az alábbi okok egyike:

  • Az erőforrás neve vagy azonosítója helytelenül van beírva.
  • Az erőforrás neve speciális karaktereket tartalmaz, és nem egyetlen vagy kettős idézőjelek veszik körül.
  • A változónak átadott értéknek nincs bevezető vagy záró szóköze.
  • Az erőforrás létezik, de egy másik előfizetésben található.

Hiba: Nem sikerült jSON-ként elemezni a sztringet

A Bash, a Linuxban a PowerShell és a Windows PowerShell között különbségek vannak. Emellett a PowerShell különböző verziói is különböző eredményeket hozhatnak. Összetett paraméterek, például JSON-sztringek esetén az ajánlott eljárás az Azure CLI konvenciójának @<file> használata a rendszerhéj értelmezésének megkerülésére. További információkért tekintse meg az alábbi cikkek egyikét:

A Bash, a PowerShell és a Cmd.exe JSON-szintaxisra vonatkozó példáiért lásd : A szkriptnyelvek közötti különbségek idézése – JSON-sztringek oktatóanyaga.

Hiba: InvalidTemplateDeployment

Amikor olyan helyen próbál létrehozni egy Azure-erőforrást, amely nem kínál ilyen erőforrást, a következőhöz hasonló hibaüzenet jelenik meg: "A kapacitáskorlátozások esetében a következő termékváltozatok nem érhetők el: a myDesiredSkuName" jelenleg nem érhető el a "mySpecifiedLocation" helyen."

Íme egy teljes hiba példa egy olyan virtuális gépre, amely nem hozható létre a westus helyszínen:

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

A megoldás a kért Azure-erőforrás egy tulajdonságának módosítása, vagy egy másik hely kipróbálása.

Hiba: Az előfizetés nem található

Feltételezve, hogy nem gépelt be helytelenül egy előfizetésnevet vagy -azonosítót, ez a hiba akkor fordul elő, ha egy erőforrás-szolgáltató nincs regisztrálva az aktív előfizetésben. Ha például végrehajtást szeretne végezni az storage account create, a Microsoft.Storage szolgáltatót regisztrálni kell. Erőforrás-szolgáltató regisztrálásához tekintse meg az Azure-erőforrás-szolgáltatókat és -típusokat.

Hiba: Rossz kézfogás... a tanúsítvány ellenőrzése sikertelen

A hiba megoldásáról további információt a proxy mögötti munka című témakörben talál.

Proxy mögötti munka

Ha önaláírt tanúsítványokat használó proxykiszolgálón használja az Azure CLI-t, az Azure CLI által használt Python-kérések tára a következő hibát okozhatja: SSLError("bad handshake: Error([('SSL routines', 'tls_process_server_certificate', 'certificate verify failed')],)",) A hiba elhárításához állítsa a környezeti változót REQUESTS_CA_BUNDLE a CA-csomag tanúsítványfájljának elérési útjára PEM formátumban.

OS Alapértelmezett hitelesítésszolgáltatói csomag
Windows 32 bites C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2\Lib\site-packages\certifi\cacert.pem
Windows 64 bites 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 /usr/local/Cellar/azure-cli/<cliversion>/libexec/lib/python<version>/site-packages/certifi/cacert.pem

Fűzze hozzá a proxykiszolgáló tanúsítványát a ca-csomag tanúsítványfájljához, vagy másolja a tartalmat egy másik tanúsítványfájlba. Ezután állítsa be REQUESTS_CA_BUNDLE az új fájl helyét. Példa:

<Original cacert.pem>

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

Egyes proxyk hitelesítést igényelnek. A vagy környezeti HTTP_PROXY HTTPS_PROXY változók formátumának tartalmaznia kell a hitelesítést, például HTTPS_PROXY="https://username:password@proxy-server:port". További információ: Proxyk konfigurálása a Pythonhoz készült Azure SDK-hoz.

Szolgáltatási elvek

A szolgáltatásnevek hibaelhárításáról további információt a Szolgáltatásnevek használata oktatóanyagban, a Karbantartás és hibaelhárítás című témakörben talál.

Egyéb problémák

Ha a jelen cikkben nem szereplő Azure CLI-vel kapcsolatos termékproblémát tapasztal, küldjön egy hibát a GitHubon.

Lásd még