当使用 Azure 资源管理器模板(ARM 模板)或 Bicep 文件部署 Azure 资源失败时,你会收到错误代码。 本文介绍如何查找错误代码,以便排查问题。 有关错误代码的详细信息,请参阅常见部署错误。
错误类型
有三种类型的错误与部署相关:
- 验证错误发生在部署开始之前,由文件中的语法错误造成。 像 Visual Studio Code 这样的代码编辑器可以识别这些错误。
- 当运行部署命令但未部署资源时,将发生预检验证错误。 这些错误是部署未开始的情况下出现的。 例如,如果某个参数值不正确,则会在预检验证中发现错误。
- 部署错误发生在部署过程中,只能通过评估 Azure 环境中的部署进度来发现。
所有类型的错误都会返回用于排查部署问题的错误代码。 验证错误和预检错误会显示在活动日志中,但不会显示在部署历史记录中。 存在语法错误的 Bicep 文件不会编译为 JSON,也不会显示在活动日志中。
要识别语法错误,可以使用包含最新 Bicep 扩展或 Azure 资源管理器工具扩展的 Visual Studio Code。
验证错误
在部署过程中,系统会验证模板,并显示错误代码。 在运行部署之前,可以通过使用 Azure PowerShell 或 Azure CLI 运行验证测试来识别验证和预检错误。
可以从门户部署 ARM 模板。 如果模板存在语法错误,则在尝试运行部署时,你将看到验证错误。 有关门户部署的详细信息,请参阅从自定义模板部署资源。
以下示例尝试部署存储帐户,但发生验证错误。
选择消息获取更多详细信息。 模板出现语法错误,错误代码为 InvalidTemplate
。 “摘要”显示表达式缺少右括号。
要在部署前验证 ARM 模板,请运行 Test-AzResourceGroupDeployment。
Test-AzResourceGroupDeployment `
-ResourceGroupName examplegroup `
-TemplateFile azuredeploy.json
输出会显示类似于 InvalidTemplateDeployment
或 AccountNameInvalid
的错误代码,你可以使用错误代码来排查问题以及修复模板。
对于 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 来验证订阅、管理组和租户范围的部署模板。
要在部署前验证 ARM 模板,请运行 az deployment group validate。
az deployment group validate \
--resource-group examplegroup \
--template-file azuredeploy.json
输出会显示类似于 InvalidTemplateDeployment
或 AccountNameInvalid
的错误代码,你可以使用错误代码来排查问题以及修复模板。
对于 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 命令来验证订阅、管理组和租户范围的部署模板。
部署错误
部署 Azure 资源需要处理多个操作。 如果操作通过验证但在部署期间失败,将发生部署错误。 你可以查看有关每个部署操作以及资源组的每个部署的消息。
要查看有关部署操作的消息,请使用资源组的活动日志:
登录到 Azure 门户。
转到“资源组”,然后选择部署的资源组名称。
选择“活动日志”。
使用筛选器查找操作的错误日志。
选择错误日志以查看操作的详细信息。
要查看部署的结果:
转至资源组。
选择“设置”>“部署”。
选择部署的“错误详细信息”。
此时将显示错误消息和错误代码 NoRegisteredProviderFound
。
要通过 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 来获取订阅、管理组和租户范围的部署信息。
要通过 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 命令来获取订阅、管理组和租户范围的部署信息。
后续步骤