Azure CLI のトラブルシューティング
エラー カテゴリ
Azure CLI によって返されるほとんどのエラーは、次のいずれかのカテゴリに分類されます。
エラーのカテゴリ | 一般的なエラーの原因 |
---|---|
認識されない引数 | パラメーターのスペルが間違っているか、存在しません。 |
必須の引数がありません | 必須パラメーターが指定されていないか、2 つの "パラメーター ペア" のうちの 1 つだけが指定されています。 パラメーターのスペルが間違う場合もあります。 |
相互に排他的な引数 | 2 つ以上のパラメーターを一緒に指定することはできません。 |
引数の値が無効です | パラメーター value が無効です。 このエラーは、多くの場合、引用符、エスケープ文字、またはスペースが原因です。 |
Bad request | 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
パラメーターに割り当てられた値において、パラメーター値の中で最も頻繁に明らかになります。 一般的なエラー メッセージを次に示します。
"Bad request ...{something} が無効です" は、スペース、単一引用符または二重引用符、または引用符がないことが原因である可能性があります。
余分なスペースまたは引用符がある場合、"Unexpected token..." が表示されます。
"Invalid jmespath_type value" エラーは、多くの場合、
--query
パラメーターの正しくない引用符で囲みます。連結またはエスケープ文字が不足しているために文字列が適切に書式設定されていない場合は、"Variable 参照が無効です" が受信されます。
"Unrecognized 引数" は、多くの場合、行連結文字が正しくないか、パラメーター名のスペルが間違っている場合に発生します。
"単項演算子後の式" は、行連結文字がない場合に表示されます。
構文エラーの説明と動作例の提供に特化した Azure CLI 記事がいくつかあります。
- スクリプト言語間の相違点の引用
- Bash、PowerShell、および Cmd の構文の違い チュートリアル
- JMESPath クエリを使用して Azure CLI コマンド出力を照会する方法に関するページで、多くの
--query
パラメーターの例を見つけます - 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 が参照コマンドを誤って解析する原因となる文字体裁エラー 場合に発生します。 スクリプトを使用する場合は、1 つ以上の条件が満たされている場合にも、このエラーが発生します。
- 行連結文字が見つからないか、正しくありません。
- PowerShell スクリプト言語で作業する場合、行継続文字の右側に末尾のスペースが存在します。 現時点では、 splatting は 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 ライブラリ によって、 SSLError("bad handshake: Error([('SSL routines', 'tls_process_server_certificate', 'certificate verify failed')],)",)
というエラーが発生する可能性があります。 このエラーに対処するには、環境変数 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 | /usr/local/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 のプロキシを構成する方法を参照してください。
サービス プリンシパル
サービス プリンシパルのトラブルシューティングの詳細については、「Work with service principals チュートリアル」の「Cleanup and Troubleshooting」を参照してください。
その他の問題
この記事に記載されていない Azure CLI で製品の問題が発生した場合は、GitHub で問題を。
関連項目
Azure CLI