Динамическое получение ключа учетной записи хранения Azure в шаблоне ARM

Я пытаюсь автоматизировать создание подключения к API для учетной записи хранения в Azure с помощью шаблонов Resource Manager.

Я использую метод listKeys в ARM для получения ключа доступа учетной записи хранения. Я прошел через это вопрос, и у меня он не работает. Когда я использую метод в разделе outputs шаблона, он работает нормально и успешно извлекает и отображает ключ доступа.

"outputs": { "listKeysOutput": { "type": "string", "value": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', parameters('storagename')), providers('Microsoft.Storage', 'storageAccounts').apiVersions[0]).keys[0].value]" } }

Однако, когда я пытаюсь использовать ту же функцию внутри ресурса подключения (как показано ниже), шаблон выполняется без каких-либо ошибок. Но при доступе к соединению API с портала Azure он говорит, что «параметр отсутствует».

"parameterValues": { "accesskey": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', parameters('storagename')), providers('Microsoft.Storage', 'storageAccounts').apiVersions[0]).keys[0].value]", "accountName": "[parameters('storagename')]" }

введите здесь описание изображения

введите здесь описание изображения

Я что-то упустил? Или вывод listKeys не принимается свойством accesskey?


person Naren    schedule 26.08.2016    source источник
comment
Не могли бы вы использовать этот API для отдыха (msdn.microsoft.com/en-us /library/mt163589.aspx)?   -  person Will Shao - MSFT    schedule 12.09.2016


Ответы (4)


У меня был аналогичный опыт несколько месяцев назад, и я решил его, используя строку подключения непосредственно в моем коде, а затем передав строку подключения в подключения. Значение выглядело так:

[concat('DefaultEndpointsProtocol=https;AccountName=',  variables('storageConfigs')[0].name,';AccountKey=', listKeys(resourceId('Microsoft.Storage/storageAccounts/',  variables('storageConfigs')[0].name), variables('defaultStorageApiVersion')).key1)]

Я использовал объект конфигурации хранилища в качестве входных данных, поэтому похоже, что выше вы можете заменить variables('storageConfigs')[0].name любым именем или функцией переменной, которую вы используете в своем коде. Похоже наверху это может быть storagename

person blackSphere    schedule 10.10.2016

Две вещи, которые могут вызывать проблему:

  1. Убедитесь, что соединение API зависит от учетной записи хранения.
  2. Используйте ключ в "accessKey" с заглавной буквы (некоторые элементы в шаблонах чувствительны к регистру)
person Iain Brown    schedule 02.09.2016

@Naren, я рекомендую вам использовать эту функцию API, чтобы получить ключ хранилища

ЗАПИСЬ https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage/storageAccounts/{accountName}/listKeys?api-version={api-version}

Вы можете получить тот же результат, что и шаблон.

    {
  “keys”: [
    {
      “keyName”: “key1”,
      “value”: "key1Value”,
      “permissions”: “FULL”
    },
    {
      “keyName”: “key2”,
      “value”: "key2Value”,
      “permissions”: “FULL”
    },
  ]
}

Для справки: https://msdn.microsoft.com/en-us/library/mt163589.aspx

person Will Shao - MSFT    schedule 12.09.2016

Зависимость действительно является требованием, чтобы учетная запись хранения уже была создана до того, как будет инициировано развертывание соединения api.

Проблема с кодом шаблона OP заключается в использовании accesskey, в то время как правильное имя параметра - accessKey (обратите внимание на заглавную букву K) для ресурса подключения API Azure Blob.

Для тех, кто борется с отсутствием документации для требуемых параметров ресурсов API-соединения - инициируйте этот API-вызов:

https://management.azure.com/subscriptions/<YOUR SUBSCRIPTION ID>/providers/Microsoft.Web/locations/<YOUR LOCATION>/managedApis/<API TYPE>?api-version=2016-06-01

<API TYPE> должен быть типом api соединения для проверки, например, azureblob, azurequeues или documentdb.

Описание всех ожидаемых параметров возвращается вместе с другой описательной информацией для этого ресурса.

person Yoad Snapir    schedule 18.07.2017