如何在ARM模板中获取Azure存储账户的容器的路径?

问题描述 投票:0回答:1

问题: 给予对存储帐户container资源的访问权限,如何在ARM模板中生成容器的URL?

我有一个Azure存储帐户和blob容器,我通过ARM模板dpeloying。

我试图保存SAS URI以写入我的keyvault中的blob存储。

我已经能够dereference 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和我的有效载荷,然后把它上传。

就像 "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 query param。

我们可能需要部署到不同的 Azure Sovereign Clouds,所以我不想将存储帐户名称注入 "https:/.blob.core.windows.net "字符串中,因为每次部署时存储主机也可能发生变化。

azure-storage azure-storage-blobs azure-resource-manager arm-template
1个回答
0
投票

我看到 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
}

这样我就得到了blob存储账户的主端点。然后我可以用以下方法获得容器端点。[concat(reference(resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName'))).primaryEndpoints.blob, 'mycontainer')]

© www.soinside.com 2019 - 2024. All rights reserved.