共用方式為


啟用偵錯記錄

若要針對部署錯誤進行疑難解答,您可以啟用偵錯記錄以取得詳細資訊。 偵錯記錄適用於使用 Bicep 檔案或 Azure Resource Manager 範本 (ARM 範本) 的部署。 您可以取得部署要求和回應的相關數據,以了解問題的原因。

警告

除錯日誌可能會洩露密碼或 listKeys 操作等機密信息。 只有在您需要針對部署錯誤進行疑難解答時,才啟用偵錯記錄。 完成偵錯時,您應該 移除偵錯部署歷程記錄

設定偵錯記錄

使用 Azure PowerShell 啟用偵錯記錄,以便將部署資訊填入 requestresponse 屬性,以進行疑難排解。 無法使用 Azure CLI 來啟用除錯記錄。

偵錯記錄只會針對主要 ARM 範本或 Bicep 檔案啟用。 如果您使用巢狀 ARM 範本或 Bicep 模組,請參閱 偵錯巢狀範本

針對資源群組部署,請使用 New-AzResourceGroupDeployment 並將 參數設定 DeploymentDebugLogLevelAllResponseContentRequestContent

啟用偵錯記錄時,會顯示警告,指出當您使用像是listKeys取得部署作業相關信息的命令時,可以記錄和顯示密碼或Get-AzResourceGroupDeploymentOperation作業等秘密。

New-AzResourceGroupDeployment `
  -Name exampledeployment `
  -ResourceGroupName examplegroup `
  -TemplateFile main.bicep `
  -DeploymentDebugLogLevel All

部署輸出會顯示除錯日誌級別。

DeploymentDebugLogLevel : RequestContent, ResponseContent

參數 DeploymentDebugLogLevel 適用於其他部署範圍:訂用帳戶、管理群組和租使用者。

取得偵錯資訊

啟用偵錯記錄之後,您可以取得部署作業的詳細資訊。 部署作業的 Azure PowerShell Cmdlet 不會輸出 requestresponse 屬性。 您必須使用 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/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 範本和巢狀範本有自己的部署名稱和部署歷程記錄。 如果您想讓 requestresponse 屬性包含疑難排解資訊,請注意下列部署情境:

  • 在未使用部署命令啟用 request 時,responsenull 屬性會包含DeploymentDebugLogLevel的主要範本及巢狀範本的值。
  • 當部署命令啟用 DeploymentDebugLogLevelrequestresponse 屬性時,只會包含主要範本的資訊。 巢狀範本的屬性包含 null 值。
  • 當巢狀範本使用 debugSetting ,且部署命令不包含 DeploymentDebugLogLevel 時,只有巢狀範本部署具有 requestresponse 屬性的值。 主要範本的屬性包含 null 值。
  • 若要取得主要範本與巢狀範本所需的 requestresponse,請在部署命令中指定 DeploymentDebugLogLevel,並在巢狀範本中使用 debugSetting

Bicep 檔案

Bicep 檔案的建議是使用模組,而不是使用Microsoft.Resources/deployments巢狀範本。 狀態訊息、狀態代碼和部署狀態將包含主要 Bicep 檔案及模組的信息,您可以使用這些信息來對部署進行故障排除。

如果您從部署命令啟用 DeploymentDebugLogLevelrequestresponse 屬性只會包含主要 Bicep 檔案部署的資訊。

移除偵錯部署歷程紀錄

當您完成偵錯時,應該移除部署歷程記錄,以防止任何有權存取的人員看到可能已記錄的敏感性資訊。 針對偵錯時所使用的每個部署名稱,執行 命令以移除部署歷程記錄。

若要移除資源群組部署的部署歷程記錄,請使用 Remove-AzResourceGroupDeployment

Remove-AzResourceGroupDeployment -ResourceGroupName examplegroup -Name exampledeployment

命令會在成功時傳回 True

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

後續步驟