azure - 嵌套资源的嵌套资源

标签 azure arm azure-resource-manager

我正在构建一个 ARM 模板,该模板创建多个存储帐户,每个帐户将包含多个容器“blob”,但显然仍然不受支持。 除了分别指定它们之外,还有其他方法可以做到这一点吗?

我想要实现的目标的示例:

StorageAcct_1:必须包含 10 个 blob StorageAcct_2:必须包含 6 个 blob

如果不复制我的存储帐户和容器模板,我就无法实现这一目标。

最佳答案

你可以做到这一点 - 有多种方法(嵌套、内联、变量循环),这实际上取决于你想要的代码是什么样子以及你的输入格式是什么......但是一个简单的 n*m 循环可以使用这个:

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "variables": {
    "numberOfAccounts": 2,
    "blobsPerAccount": 3,
    "saprefix": "[uniqueString(resourceGroup().id)]"
  },
  "resources": [
    {
      "type": "Microsoft.Storage/storageAccounts",
      "apiVersion": "2021-08-01",
      "name": "[format('{0}{1}', variables('saprefix'), copyIndex())]",
      "location": "[resourceGroup().location]",
      "sku": {
        "name": "Standard_LRS"
      },
      "kind": "StorageV2",
      "copy": {
        "name": "storageAccountLoop",
        "count": "[variables('numberOfAccounts')]"
      }
    },

    {
      "type": "Microsoft.Storage/storageAccounts/blobServices",
      "apiVersion": "2021-08-01",
      "name": "[format('{0}{1}/default', variables('saprefix'), copyIndex())]",
      "copy": {
        "name": "blobServiceLoop",
        "count": "[variables('numberOfAccounts')]"
      },
      "dependsOn": [
        "[resourceId('Microsoft.Storage/storageAccounts', format('{0}{1}', variables('saprefix'), copyIndex()))]"
      ]
    },
    {
      "type": "Microsoft.Storage/storageAccounts/blobServices/containers",
      "apiVersion": "2021-08-01",
      "name": "[format('{0}{1}/{2}/{3}{4}', variables('saprefix'), mod(copyIndex(), variables('numberOfAccounts')), 'default', 'container', mod(copyIndex(), variables('blobsPerAccount')))]",
      "copy": {
        "name": "containerLoop",
        "count": "[mul(variables('numberOfAccounts'), variables('blobsPerAccount'))]"
      },
      "dependsOn": [
        "[resourceId('Microsoft.Storage/storageAccounts', format('{0}{1}', variables('saprefix'), mod(copyIndex(), variables('numberOfAccounts'))))]",
        "[resourceId('Microsoft.Storage/storageAccounts/blobServices', format('{0}{1}', variables('saprefix'), mod(copyIndex(), variables('numberOfAccounts'))), 'default')]"
      ]
    }
  ]
}

有帮助吗?

关于azure - 嵌套资源的嵌套资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71251689/

相关文章:

azure - ARM AKS 必须定义至少一个系统池

azure - 如何在通过 ARM 模板创建部署时从系统变量读取输入

powershell - 如何使用powershell获取azure函数中的出队计数

c - Keil 的 C 库中的 __0sprintf 是什么?与完整的 sprintf 相比,如何使用它来节省代码大小?

用于 Dropdownn 类型参数的 Azure ARM 模板

assembly - 使用 ARM NEON 汇编对 atan2 进行 SIMD 向量化

c++ - ARM 设备的交叉编译库

azure - 我们需要多少 IIS 网站和 SSL 证书才能在 Azure VM 中托管我们的 5 个远程事件接收器插件

azure - Azure 上的 Quartz.net 未找到时区 ID 'Coordinated Universal Time'

Azure CLI 和 KubeCTL 的 Java 方式