Azure CLI のトラブルシューティング
エラー カテゴリ
Azure CLI によって返されるほとんどのエラーは、次のいずれかのカテゴリに分類されます。
エラー カテゴリ | 一般的なエラーの原因 |
---|---|
認識されない引数 | パラメーターのスペルが間違っているか、存在しません。 |
必須の引数がありません | 必須パラメーターが指定されていないか、2 つの "パラメーター ペア" のうちの 1 つだけが指定されています。 パラメーターのスペルが間違う場合もあります。 |
互いに排除し合う引数 | 2 つ以上のパラメーターを一緒に指定することはできません。 |
引数の値 が無効です | パラメーター 値 が無効です。 このエラーは、多くの場合、引用符、エスケープ文字、またはスペースが原因です。 |
要求が正しくありません | HTTP 状態コード 400 は、このエラーを返します。 スペースがないか、パラメーターダッシュがないか、または単一引用符または二重引用符が追加されていないか、または欠落しているか確認します。 このエラーは、パラメーター値に許可された値が含まれていない場合にも発生します。 |
リソースが見つかりません | パラメーター値で参照されている Azure リソースが見つかりません。 |
認証 | Microsoft Entra 認証に失敗しました。 |
--debug
パラメーター
Azure CLI リファレンス コマンドごとに Azure CLI が何を実行しているのかを確認する最適な方法の 1 つは、--debug
パラメーターを使用することです。 失敗したコマンドと成功したコマンドの両方の --debug
の例を次に示します。
# 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
デバッグ出力の一部を次に示します。 ログの場所と認識されない引数に注意してください。
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
...
上記のエラー --debug
出力を、正常な実行と比較します。
# Correct example: Because the resource group name contains special characters, enclose it in quotes
az group create --location eastus2 --name "msdocs-rg-test" --debug
デバッグ出力の一部を次に示します。 ログの場所、API 呼び出し、および実行時に注意してください。
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)
JSON 書式設定の --debug
の例については、スクリプト言語間の引用の違い JSON 文字列を参照してください。
一般的な構文エラー
Azure CLI は Bash、PowerShell、Windows Cmd の両方で実行できますが、スクリプト言語には構文の違いがあります。 一重引用符、二重引用符、エスケープ文字を含む Azure CLI スクリプトは、通常、言語間でコピーするときに変更する必要があります。 この課題は、特に --query
パラメーターに割り当てられた値において、パラメーター値の中で最も頻繁に現れます。 一般的なエラー メッセージを次に示します。
"要求が正しくありません...{something} が無効な" は、スペース、単一引用符または二重引用符、または引用符の不足が原因である可能性があります。
"予期しないトークンです。.." は、余分なスペースまたは引用符があるときに表示されます。
無効なjmespath_type値" エラーは、多くの場合、
--query
パラメーターで誤ったクォーテーションの指定によって発生します。"変数参照が無効です" は、連結またはエスケープ文字がないために文字列が適切に書式設定されていない場合に受け取ります。
"認識されない引数" は、多くの場合、行連結文字が正しくないか、パラメーター名のスペルミスが原因で発生します。
"単項演算子後の式がありません" は、行連結文字が見つからない場合に表示されます。
構文エラーの説明と動作例の提供に特化した Azure CLI 記事がいくつかあります。
- スクリプト言語間の引用の違い
- Bash、PowerShell、および Cmd チュートリアルでの構文の違い
- JMESPath クエリ を使用して Azure CLI コマンド出力をクエリする方法
で、多くの パラメーターの例を見つけます - Bash スクリプト言語で Azure CLI を使用する方法
- PowerShell スクリプト言語で Azure CLI を実行するための考慮事項
ヒント
コマンド エラーを解決できない場合は、別のスクリプト言語を使用してみてください。 ほとんどの Azure CLI ドキュメントは、Bash スクリプト言語を使用して Azure Cloud Shell (ACS) で記述およびテストされています。 ACS Bash で実行する記事の例を取得できますが、Windows PowerShell では実行されない場合は、単一引用符と二重引用符の使用とエスケープ文字を確認してください。
エラー: 無効な値または存在しない
これらのエラーは、正しくない形式を含む変数値を使用しようとしたときに頻繁に発生します。 Azure CLI の既定の出力は JSON であるため、Azure リソースの ID を変数に格納する場合は、--output tsv
を指定する必要があります。 次に例を示します。
# 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'.
次に、tsv
出力の種類を使用します。
# 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
エラー: 引数が必要か必須か
このエラーは、Azure CLI コマンドに必要なパラメーターがない場合、または Azure CLI が参照コマンドを誤って解析する原因となる文字体裁エラーが発生
- 行の継続文字が欠落しているか、または間違っています。
- PowerShell スクリプト言語で作業する場合、行継続文字の右側に末尾のスペースが存在します。 現時点では、スプラッティング は Azure CLI コマンドでサポートされていません。
- 変数名には、ダッシュ (-) などの特殊文字が含まれています。
エラー: リソースが見つかりません
Azure CLI でパラメーター値で渡されたリソース名または ID が見つからない場合は、通常、次のいずれかの理由が原因です。
- リソース名または ID のスペルが正しくありません。
- リソース名には特殊文字が含まれており、単一引用符または二重引用符で囲まれません。
- 変数に渡される値には、見えない先頭または末尾のスペースがあります。
- リソースは存在しますが、別のサブスクリプションにあります。
エラー: 文字列を JSON として解析できませんでした
Bash、Linux 上の PowerShell、および Windows 上の PowerShell には、引用符の扱いに違いがあります。 さらに、PowerShell のバージョンが異なると、異なる結果が生成される可能性があります。 JSON 文字列などの複雑なパラメーターの場合、ベスト プラクティスは、Azure CLI の @<file>
規則を使用してシェルの解釈をバイパスすることです。 詳細については、次のいずれかの記事を参照してください。
Bash、PowerShell、および Cmd.exeの JSON 構文の例については、スクリプト言語間の引用の違い JSON 文字列 チュートリアルを参照してください。
エラー: 無効なテンプレートデプロイメント (InvalidTemplateDeployment)
そのリソースを提供していない場所に Azure リソースを作成しようとすると、"容量制限に対して次の SKU が失敗しました: myDesiredSkuName' は現在、場所 'mySpecifiedLocation' では使用できません" というエラーが表示されます。
westus
の場所に作成できない VM の完全なエラー例を次に示します。
{"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."}]}}
解決策は、要求された Azure リソースのプロパティを変更するか、別の場所を試してみる方法です。
エラー: サブスクリプションが見つかりません
サブスクリプション名または ID を誤って入力していないと仮定すると、このエラーは、リソース プロバイダーがアクティブなサブスクリプションに登録されていない場合に発生します。 たとえば、az storage account create
を実行する場合は、Microsoft.Storage
プロバイダーを登録する必要があります。 リソース プロバイダーを登録するには、Azure リソース プロバイダーと種類のに関するページを参照してください。
エラー: ハンドシェイクが正しくありません...証明書の検証に失敗しました
このエラーを解決する方法については、「プロキシ の背後で作業する」を参照してください。
プロキシの背後で作業する
自己署名証明書を使用するプロキシ サーバーで Azure CLI を使用している場合、Azure CLI で使用 Python REQUESTS_CA_BUNDLE
を PEM 形式の CA バンドル証明書ファイルのパスに設定します。
OS | 既定の証明機関バンドル |
---|---|
Windows 32 ビット | C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2\Lib\site-packages\certifi\cacert.pem |
Windows 64 ビット | 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 | Intel モデル: /usr/local/Cellar/azure-cli/<cliversion>/libexec/lib/python<version>/site-packages/certifi/cacert.pem シリコン モデル: /opt/homebrew/Cellar/azure-cli/<cliversion>/libexec/lib/python<version>/site-packages/certifi/cacert.pem |
プロキシ サーバーの証明書を CA バンドル証明書ファイルに追加するか、その内容を別の証明書ファイルにコピーします。 次に、REQUESTS_CA_BUNDLE
を新しいファイルの場所に設定します。 次に例を示します。
<Original cacert.pem>
-----BEGIN CERTIFICATE-----
<Your proxy's certificate here>
-----END CERTIFICATE-----
一部のプロキシでは認証が必要です。
HTTP_PROXY
または HTTPS_PROXY
環境変数の形式には、認証 (HTTPS_PROXY="https://username:password@proxy-server:port"
など) を含める必要があります。 詳細については、「Azure SDK for Pythonのプロキシを構成する方法」を参照してください。
サービス プリンシパル
サービス プリンシパルのトラブルシューティングに関する情報については、「サービス プリンシパルの作業方法」 チュートリアルの「クリーンアップとトラブルシューティング」を参照してください。
その他の問題
この記事に記載されていない Azure CLI で製品の問題が発生した場合は、GitHubで問題を報告
関連項目
- Azure CLI を正常に使用するための のヒント
Azure CLI