Как я могу получить путь к контейнеру учетной записи хранения Azure в шаблоне ARM - PullRequest
0 голосов
/ 28 мая 2020

Вопрос : Имея доступ к учетной записи хранения / ресурсу контейнера, как я могу сгенерировать URL-адрес контейнера в моем шаблоне ARM?

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

Я пытаюсь сохранить URI SAS для записи в хранилище больших двоичных объектов в моем хранилище ключей.

Мне удалось разыменовать SAS Параметры запроса URI выглядят следующим образом:

  "variables": {
    "accountSasFunctionValues": {
      "signedServices": "bqt",
      "signedPermission": "rlacup",
      "signedResourceTypes": "oc",
      "signedExpiry": "2050-01-01T00:00:00Z"
    }
  },
.
.
.
... "value": "[listAccountSas(parameters('storageAccountName'), '2018-02-01', variables('accountSasFunctionValues')).accountSasToken]"

Однако я хочу добавить к этому value путь к контейнеру, чтобы я мог просто вызвать «PUT» в URI в другой службе с моей полезной нагрузкой и uplaod it.

Что-то вроде "value": "[concat(getUri(concat('Microsoft.Storage/storageAccounts/blobServices/containers/', parameters('storageAccountName'), '/default/mycontainer')), '?', listAccountSas(parameters('storageAccountName'), '2018-02-01', variables('accountSasFunctionValues')).accountSasToken]" - обратите внимание, что uri стоит перед параметром запроса sas uri.

Нам может потребоваться развертывание в других Azure Суверенных облаках, поэтому я не Я не хочу вставлять имя учетной записи хранения в строку «https://.blob.core.windows.net», так как хост хранения также может меняться в зависимости от развертывания

1 Ответ

0 голосов
/ 28 мая 2020

Я вижу, что выражение reference(...) может быть использовано для получения некоторых данных.

"outputs": {
    "BlobUri": {
        "value": "[reference(resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName'))).primaryEndpoints.blob]",
        "type" : "string"
    }
}

Ссылочный вызов возвращает такой объект:

{
   "creationTime": "2017-10-09T18:55:40.5863736Z",
   "primaryEndpoints": {
     "blob": "https://examplestorage.blob.core.windows.net/",
     "file": "https://examplestorage.file.core.windows.net/",
     "queue": "https://examplestorage.queue.core.windows.net/",
     "table": "https://examplestorage.table.core.windows.net/"
   },
   "primaryLocation": "southcentralus",
   "provisioningState": "Succeeded",
   "statusOfPrimary": "available",
   "supportsHttpsTrafficOnly": false
}

Это дает мне основную конечную точку для учетной записи хранения больших двоичных объектов. Затем я могу получить конечную точку контейнера с помощью: [concat(reference(resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName'))).primaryEndpoints.blob, 'mycontainer')]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...