3

Я пытаюсь построить строку подключения из учетной записи хранилища, используемого в другом месте в шаблоне, и яНевозможно получить Azure ключ хранения из ресурса хранения в шаблоне ARM

"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» не существует, доступные свойства «ключи
  • ключи -> Предоставленные параметры для языка шаблона функции„CONCAT“являются недействительными. Любой или любой из параметров должен быть массивом.
  • keys.key1
  • keys.primaryKey
  • клавиши [0]

Все это не удалось. Я попытался положить output в конце файла, но вывод ключей просто не выводит значения.

ответ

6

Как выясняется структура объекта, возвращаемый из listKeys представляет собой массив ключей, который выглядит как

[{ «KEYNAME» : «key1», «permissions»: «Full», «value»: «keyvalue1»}, {«keyName»: «key2», «permissions»: «Full», «value»: «keyvalue2»}]

Таким образом, правильным решением для получения стоимости было сделать keys[0].value.

2

Вы должны использовать listKeys() функция

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

+0

Я использовал listKeys, но, похоже, не существует какой-либо документации о том, что возвращается им при использовании с azure storage. Кажется, что это какая-то структура, но я не знаю, что и как получить текстовое представление ключа для использования в concat. – stimms

+1

Возвращает строку с кодировкой base64, которая представляет основной (или вторичный) ключ хранения для учетной записи. Если вы посмотрите на этот шаблон: https://github.com/rjmax/ArmExamples/blob/master/listKeysSample.json и разверните его, вы увидите его. Будет выглядеть примерно так: 3mI6Qg6 + TtZ3 + aDp/AWlft78UuW7MLFOdR6pcpYHBj0/IQMWNRJU55QPB5bmNgVIIs7V79bNTrnlywujsTXqsw == –