啟用偵錯記錄

若要針對部署錯誤進行疑難解答,您可以啟用偵錯記錄以取得詳細資訊。 偵錯記錄適用於使用 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 Cmdlet 不會輸出 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的主要範本及巢狀範本的值。
  • 當部署命令啟用 DeploymentDebugLogLevelrequest 和 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 。

如需部署歷程記錄的詳細資訊,請參閱部署範圍的文件:訂用帳戶、管理群組和租戶。

後續步驟