Azure自动化变量资产部署报错:ARM模板配置求助
解决ARM模板部署Azure自动化变量的报错问题
你遇到的错误核心是两个配置细节不符合Azure API的要求,调整后就能正常部署:
核心问题分析
isEncrypted属性类型错误:它应该是布尔值(false/true),而不是字符串类型的"false",API会对属性类型做严格校验value格式不符合JSON规范:Azure Automation变量的value必须是有效的JSON值,字符串类型的内容需要用双引号包裹,同时在ARM模板的JSON结构里要正确转义嵌套的双引号
正确的ARM模板写法
推荐两种可靠的配置方式:
方式1:手动转义字符串(直接符合JSON格式)
{ "name": "myVariable", "type": "Microsoft.Automation/automationAccounts/variables", "apiVersion": "2015-10-31", "dependsOn": [ "[resourceId('Microsoft.Automation/automationAccounts', variables('automationAccountName'))]" ], "location": "[variables('automationLocation')]", "properties": { "isEncrypted": false, "value": "\"8f703df8-0448-4ee3-8629-fc3f01840683\"" } }
方式2:使用ARM的json()函数(避免手动转义出错)
利用ARM模板内置的json()函数自动处理JSON格式,更不容易出错:
{ "name": "myVariable", "type": "Microsoft.Automation/automationAccounts/variables", "apiVersion": "2015-10-31", "dependsOn": [ "[resourceId('Microsoft.Automation/automationAccounts', variables('automationAccountName'))]" ], "location": "[variables('automationLocation')]", "properties": { "isEncrypted": false, "value": "[json('\"8f703df8-0448-4ee3-8629-fc3f01840683\"')]" } }
为什么之前的尝试失败?
- 直接写
"value": "8f703df8-0448-4ee3-8629-fc3f01840683"时,这个值对Azure API来说不是有效的JSON(JSON字符串必须用双引号包裹),所以抛出Invalid JSON primitive错误 - 如果只修改了
value但没把isEncrypted从字符串改为布尔值,也会触发API的类型校验失败
内容的提问来源于stack exchange,提问作者Francis
相关产品推荐
相关产品推荐

