我正在尝试以条件方式指定Microsoft.Compute/虚拟机资源的storageProfile属性。
根据是否设置了某个参数,应该使用某个JSON。 根据以下文档页面中的示例,这应该是可能的: https://learn.microsoft.com/en-us/azure/azure-resource-manager/resource-group-template-functions-logical#if
说明该问题的简化示例:
"name": "string",
"type": "Microsoft.Compute/virtualMachines",
"apiVersion": "2019-03-01",
"location": "string",
"tags": {},
"properties": {
"hardwareProfile": {
"vmSize": "string"
},
"storageProfile": "[if(greater(parameters('myParameter', 0)), json('{\"dataDisks\": variables('myFirstVariable')}'), json('{\"dataDisks\": variables('mySecondVariable')}'))]"
我正在努力的部分是存储配置文件属性。
在包含上述内容的调试模式下提交 ARM 模板时出现错误。
cli.azure.cli.core.util : 无法解析 test.json 例外: 无效的 \escape:第 275 行第 110 列(字符 10373(解析失败 test.json 例外: 无效的 \escape:第 275 行第 110 列(字符 10373(
第 275 行的字符 110 是冒号 ":"。
如果两个 JSON 对象同时包含双引号和单引号,正确的请求应该是什么样子的?
有一个错误,错误不是针对 if 语句,而是针对更大的函数。它应该是这样的:
greater(parameters('myParameter'), 0)
您可以在此处获取有关greater
的更多详细信息。而且似乎json
函数的格式也错误,示例如下:
json('{"a": "b"}')
有关json
函数的更多详细信息,请单击此处。
我可以在您发布的问题中找到的所有错误都在上面。如果有任何其他错误,则需要提供更多详细信息。希望对您有所帮助。
引号前面应该有一个反斜杠(\(。在下面试用:
{
"name": "string",
"type": "Microsoft.Compute/virtualMachines",
"apiVersion": "2019-03-01",
"location": "string",
"tags": {
},
"properties": {
"hardwareProfile": {
"vmSize": "string"
},
"storageProfile": "[if(greater(parameters('myParameter', 0)), json('{"dataDisks": variables('myFirstVariable')}'), json('{"dataDisks": variables('mySecondVariable')}'))]"
}
}