gpt4 book ai didi

json - Azure ARM 模板 - 访问由一个 ARM 模板在另一个 ARM 模板中创建的资源 ID

转载 作者:行者123 更新时间:2023-12-04 12:29:21 26 4
gpt4 key购买 nike

在部署实际应用程序之前,我们使用 ARM 模板部署 Azure 资源,作为构建过程的一部分。

到目前为止,我们所有的应用程序资源都自包含在资源组中。例如需要 SQL Server 和存储帐户的 Web 应用程序被合并到一个资源组中。

但是,我们遇到了需要共享资源的场景/需求,例如。跨资源组的存储帐户。资源组 A 具有存储帐户,资源组 B 的 Web 应用需要在其 appconfig.json/web.config 中提供与存储帐户相关的连接字符串/应用 key 。

问题

由于我需要获取B中资源组A的Id,如何为资源组B中的应用构建连接字符串以连接到资源组A中的资源

这是我如何构建连接字符串(如果它们位于同一资源组中)

  "variables"
{
"storageAccounts_id": "[concat(**resourceGroupA**().id,'/providers/Microsoft.Storage/storageAccounts/', variables('storageAccntName'))]",
},
"resources": [
{
"apiVersion": "2015-08-01",
"type": "config",
"name": "connectionstrings",
"dependsOn": [
"[resourceId('Microsoft.Web/sites', variables('MyWebSiteName'))]"
],
"properties": {
"AzureWebJobsDashboard": {
"value": "[concat('DefaultEndpointsProtocol=https;AccountName=',variables('storageAccntName'),';AccountKey=',concat(listKeys(variables('storageAccounts_id'),'2015-05-01-preview').key1))]",
"type": "Custom"
},
}
}
]

注释:我确实浏览过这个网站https://azure.microsoft.com/en-us/documentation/articles/resource-group-linked-templates/关于链接模板,但它不适合我们当前使用 Octo 的构建过程(除非我可能遗漏了一些东西),它首先部署 ARM,然后部署应用程序(Web )。

最佳答案

对于存储帐户名称已知且不依赖于资源组(例如 uniqueString(resourceGroup().id))的这种情况,您可以简单地使用 resourceId() 的较长形式。 。完整的形式如下:

resourceId([subscriptionId], [resourceGroupName], resourceType, resourceName1, [resourceName2]...)

因此我们可以选择提供 subscriptionId 和 resourceGroupName。

listKeys(resourceId(parameters('ResourceGroupAName'), 'Microsoft.Storage/storageAccounts', variables('ccPaymentStorageName'))

如果它位于不同的订阅中,您也可以指定该订阅。

listKeys(resourceId(parameters('SubscriptionId'), parameters('ResourceGroupAName'), 'Microsoft.Storage/storageAccounts', variables('ccPaymentStorageName'))

如果您的存储帐户名称取决于资源组,例如

"storageName": "[concat('mystorage', uniqueString(resourceGroup().id))]" // in Resource Group A

那么您要么需要始终运行创建此帐户的模板并输出 storageName 和资源组,要么找到一种方法来引用其他资源组以获取其 ID,以便可以重新创建名称。

我已经能够使用类似的方法“重新创建”资源组 ID,以便我可以生成存储帐户的正确名称。

"otherResourceGroupId": "[concat(subscription().id, '/resourceGroups/', parameters('ResourceGroupName'))]"

然后我可以使用它来适本地生成名称:

"storageAccountName": "[concat('mystorage', uniqueString(variables('otherResourceGroupId')))]"

关于json - Azure ARM 模板 - 访问由一个 ARM 模板在另一个 ARM 模板中创建的资源 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38650764/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com