デプロイ エラーのトラブルシューティングを行うには、デバッグ ログを有効にして詳細情報を取得できます。 デバッグ ログは、Bicep ファイルまたは Azure Resource Manager テンプレート (ARM テンプレート) を使用したデプロイで機能します。 デプロイの要求と応答に関するデータを取得して、問題の原因を学習できます。
警告
デバッグ ログは、パスワードや listKeys
操作などのシークレットを公開できます。 デプロイ エラーのトラブルシューティングが必要な場合にのみ、デバッグ ログを有効にします。 デバッグが完了したら、 デバッグデプロイ履歴を削除する必要があります。
デバッグ ログを設定する
Azure PowerShell を使用してデバッグ ログを有効にし、トラブルシューティングのために request
プロパティと response
プロパティにデプロイ情報を設定します。 Azure CLI を使用してデバッグ ログを有効にすることはできません。
デバッグ ログは、メインの ARM テンプレートまたは Bicep ファイルに対してのみ有効です。 入れ子になった ARM テンプレートまたは Bicep モジュールを使用している場合は、「 入れ子になったテンプレートをデバッグする」を参照してください。
リソース グループのデプロイでは、 New-AzResourceGroupDeployment を使用し、 DeploymentDebugLogLevel
パラメーターを All
、 ResponseContent
、または RequestContent
に設定します。
デバッグ ログを有効にすると、listKeys
などのコマンドを使用してデプロイ操作に関する情報を取得するときに、パスワードやGet-AzResourceGroupDeploymentOperation
操作などのシークレットをログに記録して表示できることを示す警告が表示されます。
New-AzResourceGroupDeployment `
-Name exampledeployment `
-ResourceGroupName examplegroup `
-TemplateFile main.bicep `
-DeploymentDebugLogLevel All
デプロイの出力には、デバッグ ログ レベルが表示されます。
DeploymentDebugLogLevel : RequestContent, ResponseContent
DeploymentDebugLogLevel
パラメーターは、サブスクリプション、管理グループ、テナントなどの他のデプロイ スコープで使用できます。
デバッグ情報を取得する
デバッグ ログを有効にすると、デプロイ操作に関する詳細情報を取得できます。 デプロイ操作用の Azure PowerShell コマンドレットでは、 request
プロパティと response
プロパティは出力されません。 これらのプロパティから情報を取得するには、Azure CLI を使用する必要があります。
デプロイ コマンドからデバッグ ログを有効にしない場合でも、デプロイ操作の情報を取得できます。 Azure PowerShell または Azure CLI を使用して、状態コード、状態メッセージ、プロビジョニング状態を取得します。
リソース グループのデプロイでは、 Get-AzResourceGroupDeploymentOperation を使用してデプロイ操作を取得します。
Get-AzResourceGroupDeploymentOperation `
-DeploymentName exampledeployment `
-ResourceGroupName examplegroup
StatusCode
、StatusMessage
、ProvisioningState
などのプロパティを指定して、出力をフィルター処理できます。
(Get-AzResourceGroupDeploymentOperation `
-DeploymentName exampledeployment `
-ResourceGroupName examplegroup).StatusCode
詳細については、デプロイ操作のスコープ (サブスクリプション、管理グループ、テナント) のドキュメントを参照してください。
入れ子になったテンプレートをデバッグする
メイン ARM テンプレートと入れ子になったテンプレートには、独自のデプロイ名とデプロイ履歴があります。 メインの Bicep ファイルとモジュールでは、別のデプロイ名とデプロイ履歴も使用されます。
ARM テンプレート
入れ子になった ARM テンプレートのデバッグ情報をログに記録するには、microsoft.Resources/deployments と debugSetting
プロパティを使用します。
次の例は、デプロイの要求と応答をログに記録する debugSetting
を含む入れ子になったテンプレートを示しています。
"resources": [
{
"type": "Microsoft.Resources/deployments",
"apiVersion": "2021-04-01",
"name": "nestedTemplateDebug",
"properties": {
"mode": "Incremental",
"template": {
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2022-05-01",
"name": "[variables('storageAccountName')]",
"___location": "[parameters('___location')]",
"sku": {
"name": "[parameters('storageAccountType')]"
},
"kind": "StorageV2"
}
]
},
"debugSetting": {
"detailLevel": "requestContent, responseContent"
}
}
}
],
メイン ARM テンプレートと入れ子になったテンプレートには、独自のデプロイ名とデプロイ履歴があります。
request
プロパティとresponse
プロパティにトラブルシューティング情報を含める場合は、次の展開シナリオに注意してください。
-
request
プロパティとresponse
プロパティには、デプロイ コマンドでnull
が有効になっていない場合、メイン テンプレートと入れ子になったテンプレートのDeploymentDebugLogLevel
値が含まれます。 - デプロイ コマンドで
DeploymentDebugLogLevel
を有効にすると、request
プロパティとresponse
プロパティにはメイン テンプレートの情報のみが含まれます。 入れ子になったテンプレートのプロパティには、null
値が含まれています。 - ネストされたテンプレートが
debugSetting
を使用し、デプロイコマンドにDeploymentDebugLogLevel
が含まれていない場合、ネストされたテンプレートのデプロイではrequest
プロパティとresponse
プロパティの値のみが含まれます。 メイン テンプレートのプロパティには、null
値が含まれています。 - メイン テンプレートと入れ子になったテンプレートの
request
とresponse
を取得するには、デプロイ コマンドでDeploymentDebugLogLevel
を指定し、入れ子になったテンプレートでdebugSetting
を使用します。
Bicep ファイル
Bicep ファイルの推奨事項は、で入れ子になったテンプレートではなくMicrosoft.Resources/deployments
を使用することです。 状態メッセージ、状態コード、プロビジョニングの状態には、デプロイのトラブルシューティングに使用できるメインの Bicep ファイルとモジュールの情報が含まれます。
deployment コマンドから DeploymentDebugLogLevel
を有効にした場合、 request
プロパティと response
プロパティには、メインの Bicep ファイルのデプロイに関する情報のみが含まれます。
デバッグデプロイ履歴を削除する
デバッグが完了したら、ログに記録されている可能性のある機密情報がアクセスできるユーザーに表示されないように、デプロイ履歴を削除する必要があります。 デバッグ中に使用したデプロイ名ごとに、コマンドを実行してデプロイ履歴を削除します。
リソース グループのデプロイのデプロイ履歴を削除するには、 Remove-AzResourceGroupDeployment を使用します。
Remove-AzResourceGroupDeployment -ResourceGroupName examplegroup -Name exampledeployment
このコマンドは、成功すると True
を返します。
デプロイ履歴の詳細については、デプロイ スコープのドキュメント (サブスクリプション、管理グループ、テナント) を参照してください。