次の方法で共有


デバッグログを有効化する

デプロイ エラーのトラブルシューティングを行うには、デバッグ ログを有効にして詳細情報を取得できます。 デバッグ ログは、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

StatusCodeStatusMessageProvisioningStateなどのプロパティを指定して、出力をフィルター処理できます。

(Get-AzResourceGroupDeploymentOperation `
  -DeploymentName exampledeployment `
  -ResourceGroupName examplegroup).StatusCode

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

入れ子になったテンプレートをデバッグする

メイン ARM テンプレートと入れ子になったテンプレートには、独自のデプロイ名とデプロイ履歴があります。 メインの Bicep ファイルとモジュールでは、別のデプロイ名とデプロイ履歴も使用されます。

ARM テンプレート

入れ子になった ARM テンプレートのデバッグ情報をログに記録するには、microsoft.Resources/deploymentsdebugSetting プロパティを使用します。

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

Bicep ファイル

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

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

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

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

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

Remove-AzResourceGroupDeployment -ResourceGroupName examplegroup -Name exampledeployment

このコマンドは、成功すると True を返します。

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

次のステップ