Tipy k úspěšnému použití Azure CLI

Dokončeno

V tomto modulu jste se naučili zvolit prostředí, nainstalovat Azure CLI, interaktivně spouštět příkazy Azure CLI a vytvořit skript Bash . Pojďme se ještě o krok dále naučit a zaměřit se na to, jak úspěšně používat Azure CLI . V této lekci se naučíte, jak Azure CLI funguje za příkazovým řádkem, a nabízí tipy pro řešení potíží.

Návod

Tento modul je pokročilý kurz a tato lekce vás podrobně seznámí s Azure CLI. Pokud s programováním na příkazovém řádku začínáte, zaměřte se na koncepty. Podrobnosti budou při získávání zkušeností srozumitelnější. Nevzdávejte se!

Pochopit volání rozhraní API Azure CLI

V pozadí grafického uživatelského rozhraní Azure Portal a příkazového řádku Azure CLI probíhají volání API. Volání rozhraní APIAzure CLI můžete zveřejnit pomocí parametru--debug. Co se stane, když vytvoříte novou skupinu prostředků:

az group create --location westus2 --name myResourceGroupName --debug

Tady je výstup terminálu z Azure Cloud Shellu s některými řádky vynechanými pro stručnost. Všimněte si tohoto důležitého výstupu:

  • Argumenty příkazů: Jedná se o skriptovací jazyk, nikoli Azure CLI, který analyzuje argumenty příkazů (parametry). Tato výstupní vlastnost je prvním místem, kam se podíváte, pokud příkaz způsobí chybu.
  • azlogging: Tato cesta je místo, kde je uložený soubor protokolu.
  • Hlavičky požadavku: Tyto hlavičky jsou hodnoty parametrů předané příkazem PUT .
  • Obsah odpovědi: Tento výstup se vrátí do konzoly bez úplného --debug výstupu.
cli.knack.cli: Command arguments: ['group', 'create', '--location', 'westus2', '--name', 'myResourceGroupName', '--debug']
cli.knack.cli: __init__ debug log:
...
cli.knack.cli: Event: CommandInvoker.OnPreCommandTableCreate []
cli.azure.cli.core: Modules found from index for 'group': ['azure.cli.command_modules.resource']
cli.azure.cli.core: Loading command modules:
...
cli.azure.cli.core: Loaded 53 groups, 233 commands.
cli.azure.cli.core: Found a match in the command table.
cli.azure.cli.core: Raw command  : group create
...
cli.azure.cli.core.azlogging: metadata file logging enabled - writing logs to '/home/myName/.azure/commands/2025-10-08.21-47-27.group_create.5217.log'.
...
cli.azure.cli.core.sdk.policies: Request URL: 'https://management.azure.com/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/myResourceGroupName?api-version=2022-09-01'
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': 'c79caddc-ed78-11ef-8a83-00155dbc433c'
cli.azure.cli.core.sdk.policies:     'CommandName': 'group create'
cli.azure.cli.core.sdk.policies:     'ParameterSetName': '--location --name --debug'
...
cli.azure.cli.core.sdk.policies: Response content:
...
{
  "id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/myResourceGroupName",
  "location": "westus2",
  "managedBy": null,
  "name": "myResourceGroupName",
  "properties": {
    "provisioningState": "Succeeded"
  },
  "tags": null,
  "type": "Microsoft.Resources/resourceGroups"
}
cli.knack.cli: Event: Cli.SuccessfulExecute []
cli.knack.cli: Event: Cli.PostExecute [<function AzCliLogging.deinit_cmd_metadata_logging at 0x7f98a6bc7820>]
az_command_data_logger: exit code: 0
...

Klíčové poznatky z ladicího výstupu

  • Analýza příkazů:Skriptovací jazyk (nikoli Azure CLI) analyzuje argumenty. Nejprve se podívejte sem při řešení potíží.
  • Umístění souboru protokolu: Podrobné protokoly najdete na cestě zobrazené v azlogging pro účely post-mortem analýzy.
  • Podrobnosti rozhraní API: Podívejte se na skutečné volání rozhraní REST API , včetně metody HTTP (PUTatd GET.).
  • Ukončovací kód: Hodnota 0 značí úspěch; nenulové hodnoty označují chyby.

Některé příkazy Azure CLI provádějí několik akcí. Umožňuje --debug zobrazit jednotlivé příkazy , které Azure CLI spouští. Ještě užitečnější je použít --debug pro odstraňování potíží s tím, proč skript Azure CLI vytváří neočekávané výsledky.

Řešení potíží s využitím --debug

Kolikrát jste si mysleli, že tento úkol by měl být tak jednoduchý! Proč můj skript nefunguje?" Když dostanete neočekávané výsledky z příkazů Azure CLI , je parametr --debug vaším přítelem! Pojďme si projít příklad společnosti s 100 účty úložiště Azure. Musíte najít účty, ve kterých je povolený veřejný přístup k objektům blob .

# Bash script - INCORRECT
resourceGroup="msdocs-rg-00000000"
az storage account list --resource-group $resourceGroup --query "[?allowBlobPublicAccess == `true`].id"

Pokud hodnota parametru není správně naformátovaná pro skriptovací jazyk, který parsuje hodnotu, zobrazí se invalid jmespath_type value chyba:

cli.knack.cli: Command arguments: ['storage', 'account', 'list', '--resource-group', 'msdocs-rg-00000000', '--query', '[?allowBlobPublicAccess == ].id', '--debug']
...
cli.azure.cli.core.azclierror: argument --query: invalid jmespath_type value: '[?allowBlobPublicAccess == ].id'
az_command_data_logger: argument --query: invalid jmespath_type value: '[?allowBlobPublicAccess == ].id'

Podívejte se na hodnotu proměnné, kterou Bash předává pro allowBlobPublicAccess. Kde je vlastně hodnota? Proč chybí?

Nezapomeňte, že se jedná o prostředí (označované také jako skriptovací jazyk), které parsuje hodnoty proměnných Azure CLI . Každý skriptovací jazyk a dokonce i verze stejného skriptovacího jazyka můžou vést k různým výsledkům. Tady je správný způsob předání logické hodnoty parametru v Bash:

# Bash script - CORRECT
resourceGroup="msdocs-rg-00000000"
az storage account list --resource-group $resourceGroup --query "[?allowBlobPublicAccess == \`true\`].id" --debug
cli.knack.cli: Command arguments: ['storage', 'account', 'list', '--resource-group', 'msdocs-rg-00000000', '--query', '[?allowBlobPublicAccess == `true`].id', '--debug']
...
[
  "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/msdocs-rg-00000000/providers/Microsoft.Storage/storageAccounts/msdocssa00000000"
]

Návod

Hlavní rozdíl spočívá v escapování backticků pomocí \true, takže je Bash neinterpretuje jako nahrazení příkazů.

Seznamte se s důležitým konceptem --debuga vy jste na cestě k úspěšnému používání Azure CLI ve zvoleném prostředí.

Rozdíly v syntaxi skriptovacího jazyka

Jakmile jsme právě skončili s tématem --debug, dalším krokem je uvědomit si, co způsobuje většinu chyb skriptování. Pokud váš skript obsahuje některý z těchto konstruktorů, je potřeba upravit skript napsaný v Bash , aby se úspěšně spustil v PowerShellu nebo cmd.exe :

  • Znaky pokračování řádku
  • Proměnné
  • Náhodné identifikátory
  • Nabídky
  • Konstrukty programovacího jazyka

Tady je několik příkladů:

Syntaxe Bash PowerShell cmd.exe
Znaky pokračování řádku Zpětné lomítko (\) Zpětná uvozovka (`) Stříška (^)
Pojmenování proměnných variableName=varValue $variableName="varValue" set variableName=varValue
Číslo jako řetězec \50'' `50` `50`
Logická hodnota jako řetězec \true'' `false` 'true'
Náhodné ID let "randomIdentifier=$RANDOM*$RANDOM" $randomIdentifier = (New-Guid).ToString().Substring(0,8) set randomIdentifier=%RANDOM%
Smyčka until, whilefor for, foreach, while, , do-whiledo-until for
Zápis do konzoly echo Write-Host (preferováno) nebo echo echo

Běžné nástrahy

Tato ukázková tabulka není all-inclusive. Co je důležité pochopit při přijetí chyby Azure CLI , je nejprve zvážit, že ve vašem prostředí může dojít k problému se syntaxí. Tuto možnost otestujte zkopírováním a vložením skriptu do jiného skriptovacího jazyka, jako je Azure Cloud Shell. Používá se --debug v obou prostředích a všimněte si rozdílů ve command arguments vlastnosti výstupu.

Důležité

Při kopírování bloků kódu z článků Microsoftu mějte na paměti, že většina dokumentace k Azure CLI v Microsoftu je napsaná pro Bash a testovaná v Azure Cloud Shellu.

Další způsoby získání nápovědy

Použití příkazu az find

Pomocí následujících příkladů si projděte příkazy Azure CLI :

Vyhledejte nejoblíbenější příkazy související s objektem blob slova:

az find blob

Zobrazit nejoblíbenější příkazy pro skupinu příkazů Azure CLI , například az storage:

az find "az storage"

Zobrazení nejoblíbenějších parametrů a dílčích příkazů pro příkaz Azure CLI :

az find "az storage account create"

Použijte --help

Pokud už znáte název požadovaného příkazu, --help získáte podrobnější informace o příkazu a seznam dostupných dílčích příkazů pro skupinu příkazů. Pokračujeme s našimi příklady úložiště Azure. Zde je způsob, jak získat seznam podskupin a příkazů pro správu služby blob účtu úložiště:

az storage account blob-service-properties --help

Návod

Pomocí --help libovolného příkazu nebo podpříkazu můžete získat podrobné informace o využití, aniž byste opustili terminál.

Indexy dokumentace A až Z

Pokud chcete najít příklady pro referenční příkazy Azure CLI , použijte jeden z několika indexů A až Z:

Použití Copilotu

Azure Portal i Microsoft Edge nabízejí prostředí Copilot, která vrací informace o referenčních příkazech, ukázkách a publikovaných článcích v Azure CLI. Copilot také poskytuje odkazy na související otázky týkající se Stack Overflow . Pokud máte obtížné provést úlohu s několika kroky skriptování, copilot je užitečný při kompilaci více zdrojů informací pro zodpovězení vaší otázky.

Poznámka:

GitHub Copilot vám také může pomoct psát skripty Azure CLI přímo v editoru kódu a poskytovat inteligentní dokončování kódu a návrhy.