When an Azure resource deployment fails using Azure Resource Manager templates (ARM templates) or Bicep files, an error code is received. This article describes how to find error codes so you can troubleshoot the problem. For more information about error codes, see common deployment errors.
Error types
There are three types of errors that are related to a deployment:
Validation errors occur before a deployment begins and are caused by syntax errors in your file. A code editor like Visual Studio Code can identify these errors.
Preflight validation errors occur when a deployment command is run but resources aren't deployed. These errors are found without starting the deployment. For example, if a parameter value is incorrect, the error is found in preflight validation.
Deployment errors occur during the deployment process and can only be found by assessing the deployment's progress in your Azure environment.
All types of errors return an error code that you use to troubleshoot the deployment. Validation and preflight errors are shown in the activity log but don't appear in your deployment history. A Bicep file with syntax errors doesn't compile into JSON and isn't shown in the activity log.
Templates are validated during the deployment process and error codes are displayed. Before you run a deployment, you can identify validation and preflight errors by running validation tests with Azure PowerShell or Azure CLI.
An ARM template can be deployed from the portal. If the template has syntax errors, you'll see a validation error when you try to run the deployment. For more information about portal deployments, see deploy resources from custom template.
The following example attempts to deploy a storage account and a validation error occurs.
Select the message for more details. The template has a syntax error with error code InvalidTemplate. The Summary shows an expression is missing a closing parenthesis.
The output displays error codes like InvalidTemplateDeployment or AccountNameInvalid that you can use to troubleshoot and fix the template.
For a Bicep file, the output for a syntax validation problem shows a parameter error.
Test-AzResourceGroupDeployment: Cannot retrieve the dynamic parameters for the cmdlet.
Cannot find path '/tmp/11111111-1111-1111-1111-111111111111/main.json' because it does not exist.
To get more troubleshooting information, use the Bicep build command. The output shows each error's line and column number in parentheses, and the error message.
bicep build main.bicep
/azuredeploy.bicep(22,51) : Error BCP064: Found unexpected tokens in interpolated expression.
/azuredeploy.bicep(22,51) : Error BCP004: The string at this location is not terminated due to an
unexpected new line character.
Other scopes
There are Azure PowerShell cmdlets to validate deployment templates for the subscription, management group, and tenant scopes.
az deployment group validate \
--resource-group examplegroup \
--template-file azuredeploy.json
The output displays error codes like InvalidTemplateDeployment or AccountNameInvalid that you can use to troubleshoot and fix the template.
For a Bicep file, the output shows each error's line and column number in parentheses, and the error message.
az deployment group validate \
--resource-group examplegroup \
--template-file main.bicep
/azuredeploy.bicep(22,51) : Error BCP064: Found unexpected tokens in interpolated expression.
/azuredeploy.bicep(22,51) : Error BCP004: The string at this location is not terminated due to an
unexpected new line character.
Other scopes
There are Azure CLI commands to validate deployment templates for the subscription, management group, and tenant scopes.
Several operations are processed to deploy an Azure resource. Deployment errors occur when an operation passes validation but fails during deployment. You can view messages about each deployment operation and each deployment for a resource group.