从ARM模板之外的资源访问存储帐户密钥
在我们的项目中,我使用了几个ARM模板,每一个都是针对不同的组件的,还有一个通用的ARM模板,其中包括大多数元素需要使用的所有资源,如SqlServer、存储帐户、Redis缓存(所有元素仅使用其中一个资源) 问题是,由于存储帐户位于单独的ARM模板(通用基础架构ARM模板)中,因此我无法从组件模板访问存储帐户密钥。我需要它来正确设置连接字符串的值,以便组件使用它。如果我将存储帐户资源包括在组件模板中,我可以通过以下方式访问它:从ARM模板之外的资源访问存储帐户密钥,arm,azure-storage,Arm,Azure Storage,在我们的项目中,我使用了几个ARM模板,每一个都是针对不同的组件的,还有一个通用的ARM模板,其中包括大多数元素需要使用的所有资源,如SqlServer、存储帐户、Redis缓存(所有元素仅使用其中一个资源) 问题是,由于存储帐户位于单独的ARM模板(通用基础架构ARM模板)中,因此我无法从组件模板访问存储帐户密钥。我需要它来正确设置连接字符串的值,以便组件使用它。如果我将存储帐户资源包括在组件模板中,我可以通过以下方式访问它: [concat('DefaultEndpointsProtocol
[concat('DefaultEndpointsProtocol=https;AccountName=',
variables('YFO.StorageAccount.Name'), ';AccountKey=',
listKeys(resourceId('Microsoft.Storage/storageAccounts',
variables('YFO.StorageAccount.Name')), providers('Microsoft.Storage',
'storageAccounts').apiVersions[0]).keys[0].value)]
但是当我从组件模板中删除它时(应该是这样),我会得到以下错误:
新AzureRmResourceGroupDeployment:
错误:代码=InvalidTemplate;Message=部署模板验证失败:“模板引用'********'无效:无法
查找具有此名称的模板资源或资源副本。请看
有关用法的详细信息。”
如果资源在您试图部署的模板之外,则listKeys似乎无法完成工作
对于AppInsights组件,我可以通过以下方式实现:
[reference(concat('Microsoft.Insights/components/',
variables('AppInsightsName'))).InstrumentationKey]
即使AppInsights资源位于组件ARM模板之外,但我无法使用Storage account,因为在引用函数中为Storage account返回的对象如下所示:
"networkAcls": {
"bypass": "AzureServices",
"virtualNetworkRules": [],
"ipRules": [],
"defaultAction": "Allow"
},
"supportsHttpsTrafficOnly": false,
"encryption": {
"services": {
"file": {
"enabled": true,
"lastEnabledTime": "2018-08-18T06:05:57.3069884Z"
},
"blob": {
"enabled": true,
"lastEnabledTime": "2018-08-18T06:05:57.3069884Z"
}
},
"keySource": "Microsoft.Storage"
},
"provisioningState": "Succeeded",
"creationTime": "2018-08-18T06:05:56.8228127Z",
"primaryEndpoints": {
"blob": "https://yfomormonttest.blob.core.windows.net/",
"queue": "https://yfomormonttest.queue.core.windows.net/",
"table": "https://yfomormonttest.table.core.windows.net/",
"file": "https://yfomormonttest.file.core.windows.net/"
},
"primaryLocation": "westeurope",
"statusOfPrimary": "available",
"secondaryLocation": "northeurope",
"statusOfSecondary": "available"
}
有线索吗
感谢和问候。问题在于提供程序('Microsoft.Storage','storageAccounts').apiVersions[0]无法获取listkeys需要作为参数的API版本。直接将参数设置为2018-07-01确实有效