Azure CLI を正常に使用するためのヒント

完了

このモジュールでは、環境の選択、 Azure CLI のインストール、 Azure CLI コマンドの対話形式での実行、 Bash スクリプトの作成を学習しました。 学習をさらに一歩進め、 Azure CLI を正常に使用する方法に焦点を当ててみましょう。 このユニットでは、コマンド ラインの背後で Azure CLI がどのように動作するかを説明し、トラブルシューティングのヒントを提供します。

ヒント

このモジュールは高度なレベルのコースであり、このユニットでは Azure CLI について詳しく説明します。 コマンドライン プログラミングを初めて使用する場合は、概念に注目してください。 経験を積むにつれて、詳細が理解しやすくなります。 諦めないで下さい!

Azure CLI API 呼び出しについて

Azure portal のグラフィカル ユーザー インターフェイスと Azure CLI のコマンド ラインの背後で実行するのは API 呼び出しです。 パラメーターを使用して、Azure CLI--debugを公開できます。 新しい リソース グループを作成すると、次のようになります。

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

簡潔にするためにいくつかの行を省略した Azure Cloud Shell からのターミナル出力を次に示します。 この重要な出力に注目してください。

  • コマンド引数: コマンド引数 (パラメーター) を解析するのは、 Azure CLI ではなくスクリプト言語です。 この出力プロパティは、コマンドでエラーが発生したときに最初に確認する場所です。
  • azlogging: このパスは、ログ ファイルが格納される場所です。
  • 要求ヘッダー: これらのヘッダーは、 PUT コマンドによって渡されるパラメーター値です。
  • 応答コンテンツ: この出力は、完全な --debug 出力なしでコンソールに返されます。
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
...

デバッグ出力からの主要な分析情報

  • コマンド解析:(Azure CLI ではなく) スクリプト言語は引数を解析します。 トラブルシューティングを行うときは、最初にここを参照してください。
  • ログ ファイルの場所:azloggingに示されているパスで詳細なログを検索し、事後分析を行います。
  • API の詳細:HTTP メソッド (PUTなど) を含む、実際に行われている GET 呼び出しを確認します。
  • 終了コード:0の値は成功を示し、0 以外の値はエラーを示します。

一部 の Azure CLI コマンドでは、複数のアクションが実行されます。 --debugを使用して、Azure CLI が実行している各コマンドを確認します。 さらに便利なのは、 --debug を使用して、 Azure CLI スクリプトによって予期しない結果が生成される理由をトラブルシューティングすることです。

--debug を使用したトラブルシューティング

開発者として何度、このタスクはとても簡単なはずだと思ったことがありますか? スクリプトが動作しないのはなぜですか? Azure CLI コマンドから予期しない結果を受け取った場合、 --debug パラメーターはフレンドです。 100 個の Azure ストレージ アカウントを持つ会社の例を見てみましょう。 BLOB パブリック アクセスが有効になっているアカウントを見つける必要があります。

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

値を 解析しているスクリプト言語のパラメーター値が正しく書式設定されていない場合は、 invalid jmespath_type value エラーが表示されます。

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'

BashallowBlobPublicAccessを渡している変数値を確認します。 実際、値はどこにありますか? なぜ欠けているのですか?

Azure CLI 変数の値を解析するのは環境 ("スクリプト言語" とも呼ばれます) です。 各スクリプト言語 、さらには同じスクリプト言語のバージョンでも、異なる結果が生成される可能性があります。 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"
]

ヒント

主な違いは、バックティックを \true`` でエスケープするため、Bash ではバックティックをコマンド置換として解釈しません。

--debugの重要な概念を理解すると、選択した環境で Azure CLI を正常に使用できるようになります。

スクリプト言語の構文の違い

--debugについて説明し終えたので、次の手順では、ほとんどのスクリプト エラーの原因を把握します。 Bash で記述されたスクリプトは、PowerShell で正常に実行されるように変更するか、スクリプトに次のいずれかのコンストラクトが含まれている場合はcmd.exe する必要があります。

  • 行連結文字
  • 変数
  • ランダムな識別子
  • 引用符
  • プログラミング言語コンストラクト

いくつかの例を次に示します。

構文 Bash PowerShell cmd.exe
行継続文字 バックスラッシュ (\) バッククォート (`) キャレット (^)
変数の名前付け variableName=varValue $variableName="varValue" set variableName=varValue
文字列としての数値 \50'' `50` `50`
文字列としてのブール値 \true`` `false` 'true'
ランダム ID let "randomIdentifier=$RANDOM*$RANDOM" $randomIdentifier = (New-Guid).ToString().Substring(0,8) set randomIdentifier=%RANDOM%
ループ untilwhilefor forforeachwhiledo-whiledo-until for
コンソールへの書き込み echo Write-Host (推奨) または echo echo

よくある落とし穴

この例のテーブルは、すべてを含むわけではありません。 Azure CLI エラーを受け取るときに理解しておく必要がある重要な点は、まず、環境に構文の問題がある可能性があることを考慮することです。 この可能性をテストするには 、スクリプトをコピーしてAzure Cloud Shell などの別のスクリプト言語に貼り付けます。 両方の環境で --debug を使用し、出力の command arguments プロパティの違いに注意してください。

重要

Microsoft の記事からコード ブロックをコピーする場合は、Microsoftほとんどの Azure CLI ドキュメントが Bash 用に記述され、Azure Cloud Shell でテストされていることに注意してください。

ヘルプを取得するその他の方法

az find を使用する

次の例に従って 、Azure CLI コマンドのクイック ツアーを実行します。

blob という単語に関連する最も人気のあるコマンドを検索します。

az find blob

など、az storage コマンド グループの最も一般的なコマンドを表示します。

az find "az storage"

Azure CLI コマンドの最も一般的なパラメーターとサブコマンドを表示します。

az find "az storage account create"

--help を使用する

目的のコマンドの名前が既にわかっている場合、そのコマンドに対して --help 引数を指定すると、コマンドに関する詳細情報と、コマンド グループの使用可能なサブコマンドの一覧が表示されます。 Azure Storage の例を続けて、ストレージ アカウントの BLOB サービスを管理するためのサブグループとコマンドの一覧を取得する方法を次に示します。

az storage account blob-service-properties --help

ヒント

コマンドまたはサブコマンドで --help を使用して、ターミナルを離れることなく詳細な使用状況情報を取得します。

A から Z のドキュメント インデックス

Azure CLI リファレンス コマンドの例を見つけるには、いくつかの A から Z のインデックスのいずれかを使用します。

  • 参照インデックス: すべての参照グループの A から Z の一覧を提供します。 サブグループの左側のナビゲーション バーを展開します。

  • Azure CLI の概念に関する記事の一覧: 実際のシナリオで Azure CLI 参照コマンドを使用する方法を説明するクイック スタート、ハウツー ガイド、チュートリアル、および学習モジュールの A から Z の一覧を提供します。 この記事の一覧では、az accountなど、az acr コマンド グループ別に記事をグループ化します。Windows では Ctrl + F キー (macOS の場合は Cmd + F キー) を使用して、任意のコマンド グループにすばやく移動します。

  • Azure CLI サンプル スクリプト: インデックスには、次の 3 つのタブがあります。

Copilot を使用する

Azure portalMicrosoft Edge の両方で、Azure CLI のリファレンス コマンド、サンプル、および発行された記事に関する情報を返す Copilot エクスペリエンスが提供されます。 Copilot には、 関連する Stack Overflow の質問へのリンクも用意されています。 複数のスクリプトステップで難しい作業を行う場合、 Copilot は複数の情報源をコンパイルして質問に答えるのに役立ちます。

GitHub Copilot は、コード エディターで Azure CLI スクリプトを直接記述し、インテリジェントなコード補完と提案を提供するのにも役立ちます。