배포 오류를 해결하려면 디버그 로깅을 사용하도록 설정하여 자세한 정보를 가져올 수 있습니다. 디버그 로깅은 Bicep 파일 또는 ARM 템플릿(Azure Resource Manager 템플릿)을 사용하여 배포하는 데 작동합니다. 배포의 요청 및 응답에 대한 데이터를 가져와 문제의 원인을 알아볼 수 있습니다.
경고
디버그 로깅은 암호 또는 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
자세한 내용은 배포 작업 범위(구독, 관리 그룹 및 테넌트)에 대한 설명서를 참조하세요.
- Get-AzDeploymentOperation 명령어는 배포 운영 상황을 조회하는 데 사용됩니다.
- Get-AzManagementGroupDeploymentOperation (Azure 관리 그룹 배포 작업을 가져오는 명령)
- Get-AzTenantDeploymentOperation (테넌트 배포 작업 정보 가져오기)
중첩된 템플릿 디버그
기본 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
이 배포 명령으로 사용하도록 설정되지 않을 때 기본 템플릿과 중첩된 템플릿에 대해 사용됩니다. - 배포 명령이 활성화되면
DeploymentDebugLogLevel
및request
속성에는 기본 템플릿에 대한 정보만 포함됩니다. 중첩된 템플릿의 속성에는 값이 포함됩니다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
됩니다.
배포 기록에 대한 자세한 내용은 배포 범위에 대한 설명서(구독, 관리 그룹 및 테넌트)를 참조하세요.