ARM模板中如何获取指定Azure Batch账户的主键?
获取Azure Batch账户主键的ARM模板表达式解决方案
我懂你在ARM模板里提取Batch账户主键时碰了壁——明明用listKeys能拿到包含主键的对象,但改了一点的表达式就失效了。咱们来把这个问题捋清楚。
首先,先明确正确的表达式写法:要从listKeys返回的对象里提取主键,你需要在表达式末尾加上.primary来访问对应属性,完整的表达式应该是:
"[listKeys(resourceId('Microsoft.Batch/batchAccounts', parameters('batch_accountName')), '2017-09-01').primary]"
结合你说的“仅一处差异未成功”,大概率是踩了这些常见的小坑:
- 属性名大小写错误:返回的对象里主键属性是小写的
primary,如果你写成了Primary(首字母大写),ARM模板会因为区分大小写而找不到这个属性,直接报错。 - ResourceId参数/类型写错:比如
batch_accountName参数名拼写有误,或者把资源类型写成了Microsoft.Batch/accounts(正确的是Microsoft.Batch/batchAccounts),这会导致listKeys找不到对应的Batch账户,自然拿不到密钥。 - API版本不匹配:你用的
2017-09-01版本确实会返回包含primary和secondary的结构,但如果不小心换成了其他版本,返回的JSON结构可能发生变化,导致无法提取属性。
给你一个实际使用的示例,比如在ARM模板里把主键赋值给某个资源的属性:
{ "type": "Some.Resource/Type", "properties": { "batchPrimaryKey": "[listKeys(resourceId('Microsoft.Batch/batchAccounts', parameters('batch_accountName')), '2017-09-01').primary]" } }
内容的提问来源于stack exchange,提问作者Antonia
相关产品推荐
相关产品推荐

