从ARM模板之外的资源访问存储帐户密钥

从ARM模板之外的资源访问存储帐户密钥,arm,azure-storage,Arm,Azure Storage,在我们的项目中,我使用了几个ARM模板,每一个都是针对不同的组件的,还有一个通用的ARM模板,其中包括大多数元素需要使用的所有资源,如SqlServer、存储帐户、Redis缓存(所有元素仅使用其中一个资源) 问题是,由于存储帐户位于单独的ARM模板(通用基础架构ARM模板)中,因此我无法从组件模板访问存储帐户密钥。我需要它来正确设置连接字符串的值,以便组件使用它。如果我将存储帐户资源包括在组件模板中,我可以通过以下方式访问它: [concat('DefaultEndpointsProtocol

在我们的项目中,我使用了几个ARM模板,每一个都是针对不同的组件的,还有一个通用的ARM模板,其中包括大多数元素需要使用的所有资源,如SqlServer、存储帐户、Redis缓存(所有元素仅使用其中一个资源)

问题是,由于存储帐户位于单独的ARM模板(通用基础架构ARM模板)中,因此我无法从组件模板访问存储帐户密钥。我需要它来正确设置连接字符串的值,以便组件使用它。如果我将存储帐户资源包括在组件模板中,我可以通过以下方式访问它:

[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确实有效