当使用 Azure 资源管理器模板(ARM 模板)或 Bicep 文件部署 Azure 资源失败时,你会收到错误代码。 本文介绍如何查找错误代码,以便排查问题。 有关错误代码的详细信息,请参阅 常见部署错误

有三种类型的错误与部署相关:

  • 验证错误发生在部署开始之前,由文件中的语法错误造成。 像 Visual Studio Code 这样的代码编辑器可以识别这些错误。
  • 当运行部署命令但未部署资源时,将发生 预检验证错误 。 这些错误是部署未开始的情况下出现的。 例如,如果某个参数值不正确,则会在预检验证中发现错误。
  • 部署错误发生在部署过程中,只能通过评估 Azure 环境中的部署进度来发现。
  • 所有类型的错误都会返回用于排查部署问题的错误代码。 验证错误和预检错误会显示在活动日志中,但不会显示在部署历史记录中。 存在语法错误的 Bicep 文件不会编译为 JSON,也不会显示在活动日志中。

    要识别语法错误,可以使用包含最新 Bicep 扩展 Azure 资源管理器工具扩展 Visual Studio Code

    在部署过程中,系统会验证模板,并显示错误代码。 在运行部署之前,可以通过使用 Azure PowerShell 或 Azure CLI 运行验证测试来识别验证和预检错误。

    Portal PowerShell Azure CLI

    可以从门户部署 ARM 模板。 如果模板存在语法错误,则在尝试运行部署时,你将看到验证错误。 有关门户部署的详细信息,请参阅 从自定义模板部署资源

    以下示例尝试部署存储帐户,但发生验证错误。

    选择消息获取更多详细信息。 模板出现语法错误,错误代码为 InvalidTemplate 。 “摘要”显示表达式缺少右括号。

    要在部署前验证 ARM 模板,请运行 Test-AzResourceGroupDeployment

    Test-AzResourceGroupDeployment `
      -ResourceGroupName examplegroup `
      -TemplateFile azuredeploy.json
    

    输出会显示类似于 InvalidTemplateDeploymentAccountNameInvalid 的错误代码,你可以使用错误代码来排查问题以及修复模板。

    对于 Bicep 文件,语法验证问题的输出会显示参数错误。

    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.
    

    要获取更多故障排除信息,请使用 Bicep build 命令。 输出在括号内显示每个错误的行号和列号,并显示错误消息。

    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.
    

    可以通过 Azure PowerShell cmdlet 来验证订阅、管理组和租户范围的部署模板。

    Cmdlet

    要在部署前验证 ARM 模板,请运行 az deployment group validate

    az deployment group validate \
      --resource-group examplegroup \
      --template-file azuredeploy.json
    

    输出会显示类似于 InvalidTemplateDeploymentAccountNameInvalid 的错误代码,你可以使用错误代码来排查问题以及修复模板。

    对于 Bicep 文件,输出在括号内显示每个错误的行号和列号,并显示错误消息。

    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.
    

    可以通过 Azure CLI 命令来验证订阅、管理组和租户范围的部署模板。

    要通过 PowerShell 查看部署的操作消息,请使用 Get-AzResourceGroupDeploymentOperation

    要显示部署的所有操作:

    Get-AzResourceGroupDeploymentOperation `
      -DeploymentName exampledeployment `
      -ResourceGroupName examplegroup
    

    要指定特定的属性类型:

    (Get-AzResourceGroupDeploymentOperation `
      -DeploymentName exampledeployment `
      -ResourceGroupName examplegroup).StatusCode
    

    要获取部署的结果,请使用 Get-AzResourceGroupDeployment

    Get-AzResourceGroupDeployment `
      -DeploymentName exampledeployment `
      -ResourceGroupName examplegroup
    

    可以通过 Azure PowerShell cmdlet 来获取订阅、管理组和租户范围的部署信息。

    Cmdlet

    要通过 Azure CLI 查看部署的操作消息,请使用 az deployment operation group list

    要显示部署的所有操作:

    az deployment operation group list \
      --name exampledeployment \
      --resource-group examplegroup \
      --query "[*].properties"
    

    要指定特定的属性类型:

    az deployment operation group list \
      --name exampledeployment \
      --resource-group examplegroup \
      --query "[*].properties.statusCode"
    

    要获取部署的结果,请使用 az deployment group show

    az deployment group show \
      --resource-group examplegroup \
      --name exampledeployment
    

    可以通过 Azure CLI 命令来获取订阅、管理组和租户范围的部署信息。