若要針對部署錯誤進行疑難解答,您可以啟用偵錯記錄以取得詳細資訊。 偵錯記錄適用於使用 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 。
如需部署歷程記錄的詳細資訊,請參閱部署範圍的文件:訂用帳戶、管理群組和租戶。