无法从ARM模板中的存储资源获取Azure存储密钥

时间:2016-03-13 20:23:16

标签: azure azure-storage azure-resource-manager azure-storage-account arm-template

我正在尝试使用模板中其他位置使用的存储帐户构建连接字符串,我有

"StorageConnectionString": {
               "value": "[concat('DefaultEndpointsProtocol=https;AccountName=',
 variables('storageName'),';AccountKey=',
 listKeys(resourceId('Microsoft.Storage/storageAccounts',
 variables('storageName')), providers('Microsoft.Storage',
 'storageAccounts').apiVersions[0]).key1)]",
              "type": "Custom"
             },

我从ARM - How can I get the access key from a storage account to use in AppSettings later in the template?找到了这个问题,然而该问题的语法似乎不再起作用。我收到key1不是已知属性的错误。显然,有一个名为keys的属性,但正如人们所预料的那样,这是一种某种结构。我一直无法弄清楚主键的属性来自该结构。我试过了

  • key1 - >模板语言表达式属性“key1”不存在,可用属性为“keys
  • 键 - >模板语言函数“concat”提供的参数无效。所有参数都不必是数组。
  • keys.key1
  • keys.primaryKey
  • 键[0]

所有这些都失败了。我尝试在文件末尾放置output,但输出键似乎没有输出任何值。

2 个答案:

答案 0 :(得分:8)

事实证明,从listKeys返回的对象的结构是一个看起来像

的键数组
[
  { "keyName":"key1", "permissions":"Full", "value":"keyvalue1"},
  { "keyName":"key2", "permissions":"Full", "value":"keyvalue2"}
]

因此,获得价值的正确解决方案是keys[0].value

答案 1 :(得分:1)