Tipy k úspěšnému použití Azure CLI
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
--debugvý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
azloggingpro účely post-mortem analýzy. -
Podrobnosti rozhraní API: Podívejte se na skutečné volání rozhraní REST API , včetně metody HTTP (
PUTatdGET.). -
Ukončovací kód: Hodnota
0značí ú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:
Referenční index: Poskytuje seznam A až Z všech referenčních skupin. Rozbalte levý navigační panel pro podskupiny.
Koncepční seznam článků Azure CLI: Poskytuje seznam rychlých startů A až Z, návodů, kurzů a výukových modulů, které vysvětlují, jak používat referenční příkazy Azure CLI ve scénářích reálného světa. Seznam článků seskupuje články podle skupiny příkazů Azure CLI , jako
az accountje například , a pakaz acratd. Pomocí Ctrl+F ve Windows (Cmd+F v macOS) můžete rychle přejít na skupinu příkazů podle vlastního výběru.Ukázkové skripty Azure CLI: Index má tři karty:
- Seznam podle oblasti předmětu: Najděte ukázky pro službu Azure.
- Seznam podle referenční skupiny: Vyhledejte ukázky pro referenční skupinu příkazů.
- Úložiště GitHub s ukázkami Azure CLI: Ukázky najdete v úložišti GitHub s ukázkami Azure CLI.
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.