Azure CLI'yi Başarıyla Kullanma İpuçları
Bu modülde bir ortam seçmeyi, Azure CLI'yı yüklemeyi, Azure CLI komutlarını etkileşimli olarak yürütmeyi ve bir Bash betiği oluşturmayı öğrendiniz. Şimdi öğrenmemizi bir adım daha ileri götürelim ve Azure CLI'yi başarıyla kullanmaya odaklanalım. Bu ünitede , Azure CLI'nin komut satırının arkasında nasıl çalıştığı öğretilir ve sorun giderme ipuçları sunulur.
Tavsiye
Bu modül ileri düzey bir kurs olup bu ünitede Azure CLI'nın ayrıntılarına inebilirsiniz. Komut satırı programlamayı yeni kullanıyorsanız kavramlara odaklanın. Deneyim kazandıkça ayrıntıların anlaşılması daha kolay hale gelir. Pes etme!
Azure CLI API çağrılarını anlama
API çağrıları, Azure portalının grafik kullanıcı arabirimi ve Azure CLI'nin komut satırı arkasında yürütülmektedir. parametresini kullanarak Azure CLI'nınAPI çağrılarını--debug kullanıma sunun. Yeni bir kaynak grubu oluşturduğunuzda şunlar olur:
az group create --location westus2 --name myResourceGroupName --debug
Azure Cloud Shell terminal çıktısı, özlülük için bazı satırlar atlanmış şekilde aşağıdadır. Şu önemli çıkışa dikkat edin:
- Komut bağımsız değişkenleri: Komut bağımsız değişkenlerini (parametreler) ayrıştıran betik dilidir, Azure CLI değildir. Bir komut hatayla sonuçlandığında, göz atmanız gereken ilk yer bu çıkış özelliğidir.
- azlogging: Bu yol, günlük dosyanızın depolandığı yerdir.
- İstek üst bilgileri: Bu üst bilgiler PUT komutu tarafından geçirilen parametre değerleridir.
-
Yanıt içeriği: Bu çıkış, tam
--debugçıkış olmadan konsola döndürülen çıkıştır.
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
...
Hata ayıklama çıktısından önemli içgörüler
- Komut ayrıştırma:Betik dili ( Azure CLI değil) bağımsız değişkenleri ayrıştırıyor. Sorun giderme sırasında önce buraya bakın.
-
Günlük dosyası konumu: Ayrıntılı günlükleri, sonrası analiz için
azloggingiçinde gösterilen yolda bulabilirsiniz. -
API ayrıntıları:HTTP yöntemi (,
PUTvb.) dahil olmak üzere gerçekGETçağrısına bakın. -
Çıkış kodu: değeri başarıyı
0, sıfır olmayan değerler ise hataları gösterir.
Bazı Azure CLI komutları birden çok eylem gerçekleştirir.
--debug yürüttüğü her komutu görmek için kullanın. Daha da kullanışlı olarak, --debug kullanarak bir Azure CLI betiğinin neden beklenmeyen sonuçlar ürettiğini giderebilirsiniz.
--debug ile ilgili sorun giderme
Geliştirici olarak kaç kez "Bu görev çok basit olmalı! Betiğim neden çalışmıyor?" Azure CLI komutlarından beklenmeyen sonuçlar aldığınızda parametre --debug arkadaşınızdır! Şimdi 100 Azure depolama hesabı olan bir şirket örneği üzerinden çalışalım.
Blob genel erişiminin etkinleştirildiği hesapları bulmanız gerekir.
# Bash script - INCORRECT
resourceGroup="msdocs-rg-00000000"
az storage account list --resource-group $resourceGroup --query "[?allowBlobPublicAccess == `true`].id"
Parametre değeri betik dilinde değer ayrıştırırken doğru biçimlendirilmediğinde bir invalid jmespath_type value hata alırsınız:
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'
Bash'inallowBlobPublicAccess için aktardığı değişken değerine bakın. Aslında değer nerededir? Neden eksik?
Azure CLI değişken değerlerini ayrıştıran ortamın ("betik dili" olarak da adlandırılır) olduğunu unutmayın. Her betik dili ve hatta aynı betik dilinin sürümleri farklı sonuçlar üretebilir. Bash'teboole parametresi değerini geçirmenin doğru yolu aşağıdadır:
# 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"
]
Tavsiye
Temel fark, backticks'in true'' ile \kaçmasıdır, bu nedenle Bash bunları komut değiştirme olarak yorumlamaz.
önemli kavramını --debugkavradığınızda Azure CLI'yi istediğiniz ortamda başarıyla kullanmaya devam edebilirsiniz.
Betik dili söz dizimi farklılıkları
hakkında --debugkonuşmayı yeni bitirdiğimiz için, sonraki adım çoğu betik hatasına neyin neden olduğunu öğrenmektir.
Bash'te yazılan bir betiğin PowerShell'de başarıyla yürütülebilmesi için değiştirilmesi veya betiğinizin şu yapılardan birini içermesi durumunda cmd.exe gerekir:
- Satır devamlılığı karakterleri
- Değişkenler
- Rastgele tanımlayıcılar
- Tırnak
- Programlama dili yapıları
Aşağıda bazı örnekler verilmiştir:
| Sözdizimi | Bash | PowerShell | cmd.exe |
|---|---|---|---|
| Satır devamlılığı karakterleri | Ters eğik çizgi (\) |
Ters tırnak işareti (`) |
Şapka işareti (^) |
| Değişken adlandırma | variableName=varValue |
$variableName="varValue" |
set variableName=varValue |
| Dize olarak sayı |
\50'' |
`50` |
`50` |
| Dize olarak Boole |
\doğru'' |
`false` |
'true' |
| Rastgele Kimlik | let "randomIdentifier=$RANDOM*$RANDOM" |
$randomIdentifier = (New-Guid).ToString().Substring(0,8) |
set randomIdentifier=%RANDOM% |
| Döngü |
until, while, for |
for, foreach, while, do-while, , do-until |
for |
| Konsola yazma | echo |
Write-Host (tercih edilir) veya echo |
echo |
Yaygın tuzaklar
Bu örnek tablo her şey dahil değildir.
Azure CLI hatası alırken anlamanız gereken önemli olan öncelikle ortamınız için bir söz dizimi sorunu olabileceğini göz önünde bulundurmaktır. Betiğinizi kopyalayıp Azure Cloud Shell gibi başka bir betik diline yapıştırarak bu olasılığı test edin. Her iki ortamda da kullanın --debug ve çıkışın command arguments özelliğindeki farkları not edin.
Önemli
Microsoft makalelerinden kod bloklarını kopyalarken, Microsoft'takiAzure CLI belgelerinin çoğunun Bash için yazıldığını ve Azure Cloud Shell'de test edilmiş olduğunu unutmayın.
Yardım almanın diğer yolları
az find komutunu kullan
Aşağıdaki örnekleri izleyerek Azure CLI komutlarının hızlı bir turuna katılın:
Blob sözcüğüyle ilgili en popüler komutları bulun:
az find blob
Azure CLI komut grubu için en popüler komutları gösterme, örneğinaz storage:
az find "az storage"
Azure CLI komutu için en popüler parametreleri ve alt komutları gösterin:
az find "az storage account create"
--help kullanın
İstediğiniz komutun adını zaten biliyorsanız, --help bu komutun bağımsız değişkeni komut hakkında daha ayrıntılı bilgi ve bir komut grubu için kullanılabilir alt komutların listesini alır.
Azure depolama örneklerimizle devam edersek, depolama hesabının blob hizmetini yönetmeye yönelik alt grupların ve komutların listesini şu şekilde alabilirsiniz:
az storage account blob-service-properties --help
Tavsiye
Terminalden çıkmadan ayrıntılı kullanım bilgilerini almak için herhangi bir komut veya alt komutla kullanın --help .
A-Z belge dizinleri
Azure CLI başvuru komutlarının örneklerini bulmak için birkaç A-Z dizinlerinden birini kullanın:
Başvuru dizini: Tüm başvuru gruplarının A-Z listesini sağlar. Alt gruplar için sol gezinti çubuğunu genişletin.
Azure CLI kavramsal makale listesi: Gerçek dünya senaryolarında Azure CLI başvuru komutlarının nasıl kullanılacağını açıklayan hızlı başlangıçlar, nasıl yapılır kılavuzları, öğreticiler ve öğrenme modüllerinin bir A-Z listesi sağlar. Makale listesi, makaleleri, gibi
az accountaz acrkomut grubuna göre gruplandırmaktadır. Windows'ta Ctrl+F tuşlarını (macOS'ta Cmd+F) kullanarak istediğiniz komut grubuna hızla atlayın.Azure CLI örnek betikleri: Dizinin üç sekmesi vardır:
- Konu alanına göre listele:Azure hizmetine yönelik örnekleri bulma.
- Başvuru grubuna göre listele: Başvuru komut grubu için örnekler bulun.
- Azure CLI örnekleri GitHub deposu:Azure CLI örnekleri GitHub deposunda örnekleri bulun.
Copilot'u kullan.
Hem Azure portalı hem de Microsoft Edge, Azure CLI başvuru komutları, örnekleri ve yayımlanan makaleler hakkında bilgi döndüren Copilot deneyimleri sunar. Copilot ayrıca ilgili Stack Overflow sorularının bağlantılarını da sağlar. Zorlu bir işiniz varsa ve birden fazla betik adımını tamamlamanız gerekiyorsa, Copilot sorunuzu yanıtlamak için çeşitli bilgi kaynaklarını bir araya getirerek kullanışlı bir şekilde destek sağlar.
Uyarı
GitHub Copilot ayrıca Azure CLI betiklerini doğrudan kod düzenleyicinizde yazmanıza yardımcı olarak akıllı kod tamamlama ve öneriler sağlayabilir.