デバッグ ログの有効化
デプロイ エラーのトラブルシューティングを行うには、詳細情報を取得するためにデバッグ ログを有効にできます。 デバッグ ログは、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 テンプレートのデバッグ情報をログに記録するには、debugSetting
プロパティで Microsoft.Resources/deployments を使用します。
次のサンプルは、デプロイの要求と応答をログに記録する 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
プロパティにトラブルシューティング情報を含める場合は、次のデプロイ シナリオに注意してください。
- デプロイ コマンドで
DeploymentDebugLogLevel
が有効になっていない場合、request
プロパティとresponse
プロパティには、メイン テンプレートと入れ子になったテンプレートのnull
値が含まれます。 - デプロイ コマンドで
DeploymentDebugLogLevel
を有効にすると、request
プロパティとresponse
プロパティにはメイン テンプレートに関する情報のみが含まれます。 入れ子になったテンプレートのプロパティにはnull
値が含まれます。 - 入れ子になったテンプレートで
debugSetting
が使用され、デプロイ コマンドにDeploymentDebugLogLevel
が含まれていない場合、入れ子になったテンプレートのデプロイにのみ、request
およびresponse
プロパティの値が含まれます。 メイン テンプレートのプロパティにはnull
値が含まれます。 - メイン テンプレートと入れ子になったテンプレートの
request
とresponse
を取得するには、デプロイ コマンドでDeploymentDebugLogLevel
を指定し、入れ子になったテンプレートでdebugSetting
を使用します。
Bicep ファイル
Bicep ファイルの推奨事項は、Microsoft.Resources/deployments
で入れ子になったテンプレートではなく、モジュールを使用することです。 状態メッセージ、状態コード、およびプロビジョニングの状態には、デプロイのトラブルシューティングに使用できるメインの Bicep ファイルとモジュールの情報が含まれます。
デプロイ コマンドから DeploymentDebugLogLevel
を有効にすると、request
プロパティと response
プロパティには、メインの Bicep ファイルのデプロイに関する情報のみが含まれます。
デバッグのデプロイ履歴を削除する
デバッグが完了したら、アクセス権を持つユーザーがログに記録されている可能性のある機密情報を見ないように、デプロイ履歴を削除できます。 デバッグ中に使用したデプロイ名ごとに、コマンドを実行してデプロイ履歴を削除します。
リソース グループのデプロイのデプロイ履歴を削除するには、Remove-AzResourceGroupDeployment を使用します。
Remove-AzResourceGroupDeployment -ResourceGroupName examplegroup -Name exampledeployment
成功すると、コマンドによって True
が返されます。
デプロイ履歴の詳細については、デプロイ スコープ (サブスクリプション、管理グループ、テナント) に関するドキュメントを参照してください。