6

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

"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 中找到的 - 如何从存储帐户获取访问密钥以稍后在模板的 AppSettings 中使用?但是,该问题中的语法似乎不再起作用。我收到一个key1不是已知属性的错误。显然有一个属性叫做keysbut,正如人们所预料的那样,它是某种结构。我一直无法从该结构中弄清楚主键的属性是什么。我试过了

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

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

4

2 回答 2

10

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

[
  { "keyName":"key1", "permissions":"Full", "value":"keyvalue1"},
  { "keyName":"key2", "permissions":"Full", "value":"keyvalue2"}
]

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

于 2016-03-14T04:34:18.880 回答
1

您应该使用 listKeys() 函数

https://azure.microsoft.com/en-us/documentation/articles/resource-group-template-functions/#listkeys

于 2016-03-13T22:34:45.027 回答