使用ARM模板创建Azure Blob/Fileshare容器

15

我正在寻找一种通过ARM模板在Azure Blob和文件共享存储中创建容器的方法。

目前,我已经有了用于提供存储账户的ARM模板,但我也想在ARM中创建容器。

{
    "name": "[parameters('storageAccountName')]",
    "type": "Microsoft.Storage/storageAccounts",
    "location": "[resourceGroup().location]",
    "apiVersion": "[variables('storageApiVersion')]",
    "sku": {
        "name": "[variables('storageAccountType')]"
    },
    "dependsOn": [ ],
    "tags": {
      "Environment": "[parameters('Environment')]",
      "Project": "[parameters('ProjectName')]",
      "Contact": "[parameters('ContactName')]"
    },
    "kind": "Storage",
    "properties": {
      "encryption": {
        "keySource": "Microsoft.Storage",
        "services": {
              "blob": {
                "enabled": true
              }
        }
      }
    }
  }
2个回答

12

这是可能的。Azure管理REST API现在具有Blob容器的终结点:https://learn.microsoft.com/en-us/rest/api/storagerp/blobcontainers/create

由于ARM模板映射到REST请求,我们可以创建以下模板,其中包含一个Blob容器作为存储帐户下面的嵌套资源。当然,您也可以在顶级资源数组中描述Blob容器,遵循通常的规则。

{
  "$schema": "http://schema.management.azure.com/schemas/2014-04-01-preview/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {},
  "variables": {
    "accountName": "accountname",
    "containerName": "containername"
  },
  "resources": [
    {
      "type": "Microsoft.Storage/storageAccounts",
      "name": "[variables('accountName')]",
      "apiVersion": "2018-02-01",
      "location": "westeurope",
      "kind": "BlobStorage",
      "sku": {
        "name": "Standard_LRS",
        "tier": "Standard"
      },
      "tags": {},
      "dependsOn": [],
      "properties": {
        "accessTier": "Cool"
      },
      "resources": [
        {
          "type": "blobServices/containers",
          "apiVersion": "2018-03-01-preview",
          "name": "[concat('default/', variables('containerName'))]",
          "dependsOn": [
            "[variables('accountName')]"
          ],
          "properties": {
            "publicAccess": "None"
          }
        }
      ]
    }
  ]
}

1
关于容器的连接名称:Azure中的资源ID由类型-名称对组成。因此,存储帐户具有名为“blobServices”的服务。只有一个blobService,称为“default”。在此blobService内部,存在类型“containers”,并且在其下方是容器的名称。 因此,类型由存储帐户下方的类型路径组成,而名称由名称路径组成。 - clericc
能否在自己的副本作业中创建容器,而不是将容器嵌套为存储帐户上的资源?我无法使其正常工作。我收到了一个错误的段长度错误,并且无法弄清正确的命名约定。 - Molotch
1
是的,类型应该是 Microsoft.Storage/storageAccounts/blobServices/containers,名称应该类似于 "<storageAccName>/default/<containerName>"。 - clericc
2
@Geekn:https://learn.microsoft.com/zh-cn/rest/api/storageservices/naming-and-referencing-containers--blobs--and-metadata:“容器名称中的所有字母必须小写。” - clericc
据我所知,文件服务无法通过management.azure.com进行管理。至少在REST参考中没有关于文件服务的信息。恐怕您无法在此处找到相关内容。 - clericc
显示剩余2条评论

11

以前不可能,但现在可以了。在这里检查@clericc的答案。修改一下这个答案可能是个好主意。 - Jan_V
我在 Stack Overflow 上有超过 1000 个答案,你真的希望我经常修改它们吗?你知道你可以只编辑这些答案吗? - 4c74356b41
1
哦,抱歉,我没有考虑到这一点。但是我看到你已经编辑过了! - Jan_V

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接