首页 > 解决方案 > Azure 资源管理器模板:如何获取不同 ResourceGroup 中资源的连接字符串?

问题描述

我想部署一个 AzureKeyVault,其中包含来自另一个资源组的 AzureStorageAccount 连接字符串。我知道如果 AzureKeyVault 和 AzureStorageAccount 在同一个资源组中,您可以执行此操作,如下所示:

"resources": [
    {
      "type": "Microsoft.KeyVault/vaults/secrets",
      "name": "secretName",
      "properties": {
        "value": "[concat('DefaultEndpointsProtocol=https;EndpointSuffix=core.windows.net;AccountName=', 'StorageAccountName', ';AccountKey=', first(listKeys(resourceId('Microsoft.Storage/storageAccounts', 'StorageAccountName'), variables('storageApiVersion')).keys).value)]"
      },
      "dependsOn": []
    },
    {
      "type": "Microsoft.Storage/storageAccounts",
      "name": "StorageAccountName",
      ...
    },
    {
        "type": "Microsoft.KeyVault/vaults",
        "name": "KeyVaultName",
        ...
    }
  ]

我的问题是如何更改它以从已部署的不同资源组获取连接字符串?

标签: azureazure-resource-managerarm-templateazure-template

解决方案


使用函数的内置resourceId()功能:

resourceId(%different_rg_name%, 'Microsoft.Storage/storageAccounts', 'StorageAccountName')

https://docs.microsoft.com/en-us/azure/azure-resource-manager/resource-group-template-functions-resource#resourceid


推荐阅读