啟用偵錯記錄
若要對部署錯誤進行疑難排解,您可以啟用偵錯記錄以取得詳細資訊。 偵錯記錄適用於使用 Bicep 檔案或 Azure Resource Manager 範本 (ARM 範本) 的部署。 您可以取得部署要求和回應的資料,了解問題發生的原因。
警告
偵錯記錄可能會公開密碼或 listKeys
作業等祕密。 只有在您需要針對部署錯誤進行疑難排解時,才啟用偵錯記錄。 完成偵錯時,您應該移除偵錯部署歷程記錄。
設定偵錯記錄
使用 Azure PowerShell 啟用偵錯記錄,以部署資訊填入 request
和 response
屬性來進行疑難排解。 無法使用 Azure CLI 啟用偵錯記錄。
偵錯記錄只會針對主要 ARM 範本或 Bicep 檔案啟用。 如果您使用巢狀 ARM 範本或 Bicep 模組,請參閱偵錯巢狀範本。
針對資源群組部署,請使用 New-AzResourceGroupDeployment 並將 DeploymentDebugLogLevel
參數設定為 All
、ResponseContent
或 RequestContent
。
啟用偵錯記錄時會顯示警告,指出在您使用 Get-AzResourceGroupDeploymentOperation
等命令取得部署作業的相關資訊時,可能會記錄並顯示密碼或 listKeys
作業等祕密。
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
屬性包含疑難排解資訊,請注意下列部署案例:
- 未使用部署命令啟用
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
。
如需部署歷程記錄的詳細資訊,請參閱部署範圍的文件:訂用帳戶、管理群組和租用戶。