使用ARM模板部署Azure自动化账户变量时遇JSON无效错误
解决ARM模板部署自动化账户变量的JSON错误问题
问题根源
报错"Invalid JSON - Kindly check the value of the variable"的核心原因是自动化账户变量的value字段需要是JSON序列化后的字符串。Azure Automation要求变量值以JSON格式存储,直接传入普通字符串会被ARM解析为无效JSON。
修复步骤
修正
value字段格式
将原value值用额外的双引号包裹并转义内部引号,确保它是合法的JSON字符串:"value": "\"DummyValue\""针对不同类型的变量值,需遵循JSON格式规范:
- 数字类型:
"value": "123" - 布尔类型:
"value": "true" - 数组类型:
"value": "[\"item1\",\"item2\"]"
- 数字类型:
优化嵌套资源依赖(可选)
嵌套在自动化账户下的资源,dependsOn可直接引用父资源名称,写法更简洁:"dependsOn": [ "[variables('automationaccount').accountName]" ]注:嵌套资源默认会依赖父资源,此配置可省略。
验证标签字段格式
确保tags参数为对象类型,模板中写法保持:"tags": "[parameters('tags')]"
修复后的变量资源代码片段
"resources":[ { "type":"variables", "apiVersion":"2020-01-13-preview", "name":"DummyName", "dependsOn":[ "[variables('automationaccount').accountName]" ], "properties":{ "description":"Dummydesc", "isEncrypted":false, "value":"\"DummyValue\"" } } ]
额外验证建议
- 用VS Code的Azure Resource Manager Tools插件提前检查JSON语法,规避格式问题。
- 若将变量作为独立资源部署,需确保资源ID格式为
Microsoft.Automation/automationAccounts/{accountName}/variables/{variableName},且dependsOn指向自动化账户的完整resourceId。
内容的提问来源于stack exchange,提问作者Eddie Ace
相关产品推荐
相关产品推荐

