デバッグ ログの有効化

デプロイ エラーのトラブルシューティングを行うには、詳細情報を取得するためにデバッグ ログを有効にできます。 デバッグ ログは、Bicep ファイルまたは Azure Resource Manager テンプレート (ARM テンプレート) を使用したデプロイで機能します。 デプロイの要求と応答に関するデータを取得して、問題の原因を知ることができます。

警告

デバッグ ログによって、パスワードや listKeys 操作などのシークレットが公開される可能性があります。 デバッグ ログは、デプロイ エラーのトラブルシューティングが必要な場合にのみ有効にしてください。 デバッグが完了したら、デバッグ デプロイ履歴を削除する必要があります。

デバッグ ログを設定する

Azure PowerShell を使用して、request プロパティと response プロパティにトラブルシューティング用のデプロイ情報を設定するデバッグ ログを有効にします。 Azure CLI を使用してデバッグ ログを有効にすることはできません。

デバッグ ログは、メインの ARM テンプレートまたは Bicep ファイルに対してのみ有効です。 入れ子になった ARM テンプレートまたは Bicep モジュールを使用している場合は、「入れ子になったテンプレートのデバッグ」をご覧ください。

リソース グループのデプロイの場合、New-AzResourceGroupDeployment を使用し、DeploymentDebugLogLevel パラメータを AllResponseContent、または 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

StatusCodeStatusMessage、または 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 値が含まれます。
  • メイン テンプレートと入れ子になったテンプレートの requestresponse を取得するには、デプロイ コマンドで DeploymentDebugLogLevel を指定し、入れ子になったテンプレートで debugSetting を使用します。

Bicep ファイル

Bicep ファイルの推奨事項は、Microsoft.Resources/deployments で入れ子になったテンプレートではなく、モジュールを使用することです。 状態メッセージ、状態コード、およびプロビジョニングの状態には、デプロイのトラブルシューティングに使用できるメインの Bicep ファイルとモジュールの情報が含まれます。

デプロイ コマンドから DeploymentDebugLogLevel を有効にすると、request プロパティと response プロパティには、メインの Bicep ファイルのデプロイに関する情報のみが含まれます。

デバッグのデプロイ履歴を削除する

デバッグが完了したら、アクセス権を持つユーザーがログに記録されている可能性のある機密情報を見ないように、デプロイ履歴を削除できます。 デバッグ中に使用したデプロイ名ごとに、コマンドを実行してデプロイ履歴を削除します。

リソース グループのデプロイのデプロイ履歴を削除するには、Remove-AzResourceGroupDeployment を使用します。

Remove-AzResourceGroupDeployment -ResourceGroupName examplegroup -Name exampledeployment

成功すると、コマンドによって True が返されます。

デプロイ履歴の詳細については、デプロイ スコープ (サブスクリプション、管理グループ、テナント) に関するドキュメントを参照してください。

次の手順