Dela via


Felsöka Azure CLI

Felkategorier

De flesta fel som returneras av Azure CLI finns i någon av följande kategorier:

Felkategori Allmän felorsak
Okänt argument En parameter är felstavad eller finns inte.
Obligatoriskt argument saknas En obligatorisk parameter har inte angetts eller så anges bara ett av två "parameterpar". En parameter kan också vara felstavad.
Ömsesidigt uteslutande argument Det går inte att ange två eller flera parametrar tillsammans.
Ogiltigt argumentvärde Parametervärdet är inte giltigt. Det här felet beror ofta på citattecken, escape-tecken eller avstånd.
Felaktig begäran En HTTP-statuskod på 400 returnerar det här felet. Sök efter ett saknat utrymme, saknat parameterstreck eller ett extra eller saknat enkelt eller dubbelt citattecken. Det här felet inträffar också när ett parametervärde inte innehåller något tillåtet värde.
Det går inte att hitta resursen Det går inte att hitta en Azure-resurs som refereras till i ett parametervärde.
Autentisering Microsoft Entra-autentiseringen misslyckades.

Parametern --debug

Ett av de bästa sätten att se vad Azure CLI kör för varje Azure CLI-referenskommando är att använda parametern --debug . Här är exempel på --debug för både ett misslyckat och lyckat kommando:

# 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

Här är en del av felsökningsutdata. Observera loggplatsen och det okända argumentet.

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

Jämför felutdata --debug som anges ovan med en lyckad körning:

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

Här är en del av felsökningsutdata. Observera loggplatsen, API-anropet och körningstiden.

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)

Exempel på --debug JSON-formatering finns i Citera skillnader mellan skriptspråk – JSON-strängar.

Vanliga syntaxfel

Även om Azure CLI kan köras i både Bash, PowerShell och Windows Cmd finns det syntaxskillnader mellan skriptspråk. Azure CLI-skript som innehåller enkla citattecken, dubbla citattecken och escape-tecken måste vanligtvis ändras när de kopieras mellan språk. Den här utmaningen visar sig oftast i parametervärden, särskilt i värden som tilldelats parametern --query . Här följer några vanliga felmeddelanden:

  • "Felaktig begäran ... {something} är ogiltigt" kan orsakas av blanksteg, enkla eller dubbla citattecken eller brist på citattecken.

  • "Oväntad token..." visas när det finns ett extra utrymme eller citattecken.

  • Felet "Ogiltigt jmespath_type värde" kommer ofta från felaktig citat i parametern --query .

  • "Variabelreferensen är ogiltig" tas emot när en sträng inte formateras korrekt ofta på grund av sammanfogning eller ett escape-tecken som saknas.

  • "Okända argument" orsakas ofta av ett felaktigt radfortsättningstecken eller felstavat parameternamn.

  • "Saknade uttryck efter unary-operatorn" visas när ett radfortsättningstecken saknas.

Det finns flera Azure CLI-artiklar som är dedikerade för att förklara syntaxfel och tillhandahålla arbetsexempel:

Dricks

Om du inte kan lösa ett kommandofel kan du prova att använda ett annat skriptspråk. De flesta Azure CLI-dokumentationen skrivs och testas i Azure Cloud Shell (ACS) med ett Bash-skriptspråk. Om du kan få ett artikelexempel att köra i ACS Bash, men det inte körs i Windows PowerShell, granskar du din användning av enkla och dubbla citattecken och escape-tecken.

Fel: Ogiltigt värde eller finns inte

Dessa fel uppstår ofta när du försöker använda ett variabelvärde som innehåller ett felaktigt format. Standardutdata för Azure CLI är JSON, så om du försöker lagra ett ID för en Azure-resurs i en variabel måste du ange --output tsv. Här är ett exempel:

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

Använd tsv nu utdatatypen.

# 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

Fel: Argument förväntas eller krävs

Du får det här felet när ett Azure CLI-kommando saknar en obligatorisk parameter, eller om det finns ett typografiskt fel som gör att Azure CLI felaktigt parsar referenskommandot. När du arbetar med ett skript får du även det här felet när ett eller flera villkor är sanna:

  • Ett radfortsättningstecken saknas eller är felaktigt.
  • Det finns ett avslutande utrymme på höger sida av ett radfortsättningstecken när du arbetar i PowerShell-skriptspråket. För närvarande stöds inte splatting med Azure CLI-kommandon.
  • Ett variabelnamn innehåller ett specialtecken, till exempel ett bindestreck (-).

Fel: Resursen hittades inte

När Azure CLI inte kan hitta resursnamnet eller ID:t som skickats i ett parametervärde beror det vanligtvis på någon av följande orsaker:

  • Resursnamnet eller ID:t stavas felaktigt.
  • Resursnamnet innehåller specialtecken och omges inte av enkla eller dubbla citattecken.
  • Värdet som skickas till en variabel har osynliga inledande eller avslutande blanksteg.
  • Resursen finns, men finns i en annan prenumeration.

Fel: Det gick inte att parsa strängen som JSON

Det finns citatskillnader mellan Bash, PowerShell i Linux och PowerShell i Windows. Dessutom kan olika versioner av PowerShell ge olika resultat. För komplexa parametrar, till exempel en JSON-sträng, är bästa praxis att använda Azure CLI:s @<file> konvention för att kringgå ett gränssnitts tolkning. Mer information finns i någon av följande artiklar:

JSON-syntaxexempel för Bash, PowerShell och Cmd.exe finns i Självstudiekurs om att citera skillnader mellan skriptspråk – JSON-strängar .

Fel: InvalidTemplateDeployment

När du försöker skapa en Azure-resurs på en plats som inte erbjuder den resursen får du ett felmeddelande som liknar det här meddelandet: "Följande SKU:er har misslyckats för kapacitetsbegränsningar: myDesiredSkuName" är för närvarande inte tillgängligt på platsen "mySpecifiedLocation".

Här är ett fullständigt felexempel för en virtuell dator som inte kan skapas på platsen 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."}]}}

Lösningen är att ändra en egenskap för din begärda Azure-resurs eller prova en annan plats.

Fel: Prenumerationen hittades inte

Förutsatt att du inte har angett ett prenumerationsnamn eller ID felaktigt uppstår det här felet när en resursprovider inte är registrerad i den aktiva prenumerationen. Om du till exempel vill köra az storage account createmåste providern Microsoft.Storage registreras. Information om hur du registrerar en resursprovider finns i Azure-resursprovidrar och typer.

Fel: Felaktig handskakning... certifikatet kunde inte verifieras

Mer information om hur du löser det här felet finns i Arbeta bakom en proxyserver .

Arbeta bakom en proxy

Om du använder Azure CLI via en proxyserver som använder självsignerade certifikat kan python-begärandebiblioteket som används av Azure CLI orsaka följande fel: SSLError("bad handshake: Error([('SSL routines', 'tls_process_server_certificate', 'certificate verify failed')],)",). Du kan åtgärda det här felet genom att ange miljövariabeln REQUESTS_CA_BUNDLE till sökvägen till CA-paketcertifikatfilen i PEM-format.

OS Standardpaket för certifikatutfärdare
Windows 32-bitars C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2\Lib\site-packages\certifi\cacert.pem
Windows 64-bitars 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

Lägg till proxyserverns certifikat i CA-paketcertifikatfilen eller kopiera innehållet till en annan certifikatfil. Ange REQUESTS_CA_BUNDLE sedan till den nya filplatsen. Här är ett exempel:

<Original cacert.pem>

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

Vissa proxyservrar kräver autentisering. Formatet för HTTP_PROXY miljövariablerna eller HTTPS_PROXY bör innehålla autentiseringen, till exempel HTTPS_PROXY="https://username:password@proxy-server:port". Mer information finns i Konfigurera proxyservrar för Azure SDK för Python.

Tjänstens huvudnamn

Information om hur du felsöker tjänstens huvudnamn finns i Rensa och felsöka i självstudien Arbeta med tjänstens huvudnamn.

Andra problem

Om du får ett produktproblem med Azure CLI som inte finns med i den här artikeln kan du skapa ett problem på GitHub.

Se även