You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ARM模板获取Microsoft.Maps/accounts主键并存入KeyVault的问题与解决

解决ARM模板中获取Azure Maps账户主键的问题

我来帮你梳理下你遇到的几个问题,以及对应的解决办法:

1. 第一个错误:providers函数参数使用不当

你最初尝试用providers('Microsoft.Maps', 'account')动态获取API版本时出错,原因是:

  • providers函数的第二个参数要求是不带命名空间的多段资源类型,而Azure Maps的资源类型是复数形式的accounts,不是单数account
  • 其实更稳妥的方式是直接使用已知的、兼容的API版本,不用动态获取,避免这类函数参数错误

2. 第二个错误:资源类型单复数不匹配+API版本兼容性

你后续测试的代码出现InvalidResourceType错误,是因为:

  • 资源ID里写的Microsoft.Maps/account是单数,而Azure Maps的正确资源类型是复数Microsoft.Maps/accounts
  • 虽然2018-05-01是Microsoft.Maps/accounts的有效API版本,但资源类型写错的话,API版本也无法正常匹配

3. 最终可正常运行的写法

修正上述问题后,正确的表达式如下:

"[listKeys(resourceId('Microsoft.Maps/accounts', parameters('keyVaultVaultSecretMapsAccountsResourceName')), '2018-05-01').primaryKey]"

这里的关键修正点包括:

  • 将资源类型从单数account改为复数accounts,匹配Azure Maps的实际资源类型
  • 调整参数名以对应复数资源的命名(确保和你模板中的参数名称一致)
  • 使用primaryKey直接获取主键,而非keys[0].value——因为Azure Maps账户的listKeys返回结构中,直接提供了primaryKey和secondaryKey两个属性,更直观可靠

这些错误主要源于对ARM模板中资源类型的单复数混淆、函数参数规则的误解,以及对listKeys返回结构的不熟悉,修正后就能成功获取主键并将其持久化到Key Vault中了。

内容的提问来源于stack exchange,提问作者user9314395

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 06:47:04