调试 ARM 模板
Debug ARM template
我正在开发一个 ARM 模板,其中包含 API 的 API 管理资源,由 Azure API Management DevOps Resource Kit.
生成
ARM 模板超过 50,000 行,当我尝试部署它时,出现此错误:
InvalidTemplate - Deployment template language expression evaluation failed: 'Unable to parse language expression ' ': expected token 'Identifier' and actual 'EndOfData'.'. Please see https://aka.ms/arm-template-expressions for usage details.
此错误不包含有关我的模板中错误位置的任何信息,并且文件太大,无法手动调试。
有没有一种工具可以让调试具有更精确信息的 ARM 模板? (特别是它可以给出错误发生的行)。
尝试 visual studio 代码的扩展:https://marketplace.visualstudio.com/items?itemName=msazurermtools.azurerm-vscode-tools
它将为您提供 ARM 模板的 Intellisense,然后您可能会发现错误。
您可以使用 azure 客户端语法验证 模板:
az group deployment validate
--resource-group <rg-name>
--template-file <arm-name>
或者如果您更喜欢 PowerShell:
Test-AzureRmResourceGroupDeployment
-ResourceGroupName <rg-name>
-TemplateFile <arm-name>
此外,在 VSCode(或其他 IDE,如 Rider)中,您可以下载 ARM
插件来轻松发现此类错误。
我发现微软自己提供的工具非常有用。
arm-ttk 是一个 powershell 脚本,用于检查您的 createUIDefinition.json
和 mainTemplate.json
。
唯一的缺点是它基于 powershell,如果您使用 linux,您首先必须安装 pwsh
。
或者,您可以使用 docker 容器。
我正在开发一个 ARM 模板,其中包含 API 的 API 管理资源,由 Azure API Management DevOps Resource Kit.
生成ARM 模板超过 50,000 行,当我尝试部署它时,出现此错误:
InvalidTemplate - Deployment template language expression evaluation failed: 'Unable to parse language expression ' ': expected token 'Identifier' and actual 'EndOfData'.'. Please see https://aka.ms/arm-template-expressions for usage details.
此错误不包含有关我的模板中错误位置的任何信息,并且文件太大,无法手动调试。
有没有一种工具可以让调试具有更精确信息的 ARM 模板? (特别是它可以给出错误发生的行)。
尝试 visual studio 代码的扩展:https://marketplace.visualstudio.com/items?itemName=msazurermtools.azurerm-vscode-tools
它将为您提供 ARM 模板的 Intellisense,然后您可能会发现错误。
您可以使用 azure 客户端语法验证 模板:
az group deployment validate
--resource-group <rg-name>
--template-file <arm-name>
或者如果您更喜欢 PowerShell:
Test-AzureRmResourceGroupDeployment
-ResourceGroupName <rg-name>
-TemplateFile <arm-name>
此外,在 VSCode(或其他 IDE,如 Rider)中,您可以下载 ARM
插件来轻松发现此类错误。
我发现微软自己提供的工具非常有用。
arm-ttk 是一个 powershell 脚本,用于检查您的 createUIDefinition.json
和 mainTemplate.json
。
唯一的缺点是它基于 powershell,如果您使用 linux,您首先必须安装 pwsh
。
或者,您可以使用 docker 容器。