无法从 ARM 模板中的存储资源获取 Azure 存储密钥
Unable to get Azure storage key from storage resource in 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"
},
我从 中找到的,但是该问题中的语法似乎不再有效。我收到一条错误消息,指出 key1
不是已知的 属性。显然有一个名为 keys
的 属性,但正如人们可能预料的那样,它是某种结构。我一直无法从该结构中找出主键的 属性 是什么。我试过了
- key1 -> 模板语言表达式 属性 'key1' 不存在,可用的属性是 'keys
- keys -> 为模板语言函数 'concat' 提供的参数无效。所有或 none 个参数必须是一个数组。
- keys.key1
- keys.primaryKey
- 键[0]
都失败了。我尝试在文件末尾放置一个 output
但输出键似乎没有输出任何值。
您应该使用 listKeys() 函数
https://azure.microsoft.com/en-us/documentation/articles/resource-group-template-functions/#listkeys
事实证明,从 listKeys 返回的对象的结构是一个键数组,看起来像
[
{ "keyName":"key1", "permissions":"Full", "value":"keyvalue1"},
{ "keyName":"key2", "permissions":"Full", "value":"keyvalue2"}
]
所以获取价值的正确解决方案是keys[0].value
。
我正在尝试从模板中其他地方使用的存储帐户构建连接字符串,并且我有
"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"
},
我从 key1
不是已知的 属性。显然有一个名为 keys
的 属性,但正如人们可能预料的那样,它是某种结构。我一直无法从该结构中找出主键的 属性 是什么。我试过了
- key1 -> 模板语言表达式 属性 'key1' 不存在,可用的属性是 'keys
- keys -> 为模板语言函数 'concat' 提供的参数无效。所有或 none 个参数必须是一个数组。
- keys.key1
- keys.primaryKey
- 键[0]
都失败了。我尝试在文件末尾放置一个 output
但输出键似乎没有输出任何值。
您应该使用 listKeys() 函数
https://azure.microsoft.com/en-us/documentation/articles/resource-group-template-functions/#listkeys
事实证明,从 listKeys 返回的对象的结构是一个键数组,看起来像
[
{ "keyName":"key1", "permissions":"Full", "value":"keyvalue1"},
{ "keyName":"key2", "permissions":"Full", "value":"keyvalue2"}
]
所以获取价值的正确解决方案是keys[0].value
。