Azure ARM模板DependentOn FileShare

问题描述

我需要通过ARM模板存储帐户创建->文件共享->具有已安装文件共享的容器。
依赖性为:

  1. 文件共享取决于存储帐户
  2. 容器取决于文件共享

如何获取Fileshare的ReferenceId?

我有以下代码

    {
        "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#","contentVersion": "1.0.0.0","parameters": {
            "storageAccountType": {
                "type": "string","defaultValue": "Standard_lrs","allowedValues": [
                    "Standard_lrs","Standard_GRS"
                ],"Metadata": {
                    "description": "Storage account type (SKU)"
                }
            },"fileShareName": {
                "type": "string","minLength": 3,"maxLength": 63,"defaultValue": "sftp","Metadata": {
                    "description": "Name of the File Share to be created. "
                }
            }
        },"variables": {
            "deploymentLocation": "[resourceGroup().location]","storageAccountName": "[concat('sftpstr',uniqueString(resourceGroup().id))]"
        },"resources": [
            {
                "type": "Microsoft.Storage/storageAccounts","name": "[variables('storageAccountName')]","apiVersion": "2019-06-01","location": "[variables('deploymentLocation')]","sku": {
                    "name": "[parameters('storageAccountType')]"
                },"kind": "StorageV2","properties": {
                    "accesstier": "Hot"
                }
            },{
                "type": "Microsoft.Storage/storageAccounts/fileServices/shares","properties": {
                    "accesstier": "Hot"
                },"name": "[concat(variables('storageAccountName'),'/default/',parameters('fileShareName'))]","dependsOn": [
                    "[resourceId('Microsoft.Storage/storageAccounts',variables('storageAccountName'))]"
                ]
            },{
                "type": "Microsoft.ContainerInstance/containerGroups","name": "sftp-container-group","apiVersion": "2018-04-01","dependsOn": [
                    "[resourceId('Microsoft.Storage/storageAccounts/fileServices/shares',????? )]" //how to get reference to specific Fileshare??? I've tried >   [concat(variables('storageAccountName'),parameters('fileShareName'))] but it didn't work
                ],"properties": {
                    .......
                }
            }
        ] 
    }

而且我不知道如何设置对Fileshare的依赖性:

"dependsOn": [
    "[resourceId('Microsoft.Storage/storageAccounts/fileServices/shares',????? )]" //how to get reference to specific Fileshare??? 
],

我尝试过[concat(variables('storageAccountName'),parameters('fileShareName'))],但没有用。

有什么主意吗?

谢谢

解决方法

使用以下格式:

"dependsOn": [
    "[resourceId('Microsoft.Storage/storageAccounts/fileServices/shares',variables('storageAccountName'),'default',parameters('fileShareName') )]"
],
,

您可以创建两个单独的资源Microsoft.Storage/storageAccounts/fileServicesMicrosoft.Storage/storageAccounts/fileServices/shares,然后尝试设置对Fileshare的依赖性,如下所示:

        "dependsOn": [
            "[resourceId('Microsoft.Storage/storageAccounts/fileServices/shares',parameters('fileShareName') )]" 
        ],

或者,建议通过容器实例中的azure-CLI创建存储帐户和文件共享,并参考this quickstart template

 "variables": {
    "image": "microsoft/azure-cli","cpuCores": "1.0","memoryInGb": "1.5","containerGroupName": "createshare-containerinstance","containerName": "createshare"
  },"resources": [
    {
      "type": "Microsoft.Storage/storageAccounts","name": "[parameters('storageAccountName')]","apiVersion": "2019-06-01","location": "[parameters('location')]","sku": {
        "name": "[parameters('storageAccountType')]"
      },"kind": "StorageV2"
    },{
      "name": "[variables('containerGroupName')]","type": "Microsoft.ContainerInstance/containerGroups","apiVersion": "2019-12-01","location": "[parameters('containerInstanceLocation')]","dependsOn": [
        "[resourceId('Microsoft.Storage/storageAccounts/',parameters('storageAccountName'))]"
      ],"properties": {
        "containers": [
          {
            "name": "[variables('containerName')]","properties": {
              "image": "[variables('image')]","command": [
                "az","storage","share","create","--name","[parameters('fileShareName')]"
              ],"environmentVariables": [
                {
                  "name": "AZURE_STORAGE_KEY","value": "[listKeys(parameters('storageAccountName'),'2019-06-01').keys[0].value]"
                },{
                  "name": "AZURE_STORAGE_ACCOUNT","value": "[parameters('storageAccountName')]"
                }
              ],"resources": {
                "requests": {
                  "cpu": "[variables('cpuCores')]","memoryInGb": "[variables('memoryInGb')]"
                }
              }
            }
          }
        ],"restartPolicy": "OnFailure","osType": "Linux"
      }
    }
  ]

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...