You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Azure Data Lake Gen2的YAML脚本中为容器创建目录?

问题原因

你当前的写法无效是因为ADLS Gen2的目录不属于Azure资源管理器(ARM)可直接管理的资源类型,Microsoft.Storage/storageAccounts/blobServices/containers仅用于创建容器(即ADLS Gen2中的文件系统),无法通过嵌套路径的方式创建目录。目录本质是blob的虚拟前缀,需通过存储服务API或工具创建。

解决方案:使用部署脚本创建目录

可以在ARM模板中添加Microsoft.Resources/deploymentScripts资源,通过Azure CLI命令在容器创建完成后自动生成目录。以下是修改后的完整资源片段:

"resources": [
    {
      "name": "[parameters('dataLakeGen2Name')]",
      "type": "Microsoft.Storage/storageAccounts",
      "location": "[parameters('location')]",
      "apiVersion": "2019-06-01",
      "sku": {
        "name": "[parameters('skuName')]",
        "tier": "Standard"
      },
      "kind": "[parameters('accountKind')]",
      "tags": {},
      "properties": {
        "isHnsEnabled": true
      }
    },
    {
      "type": "Microsoft.Storage/storageAccounts/blobServices/containers",
      "apiVersion": "2021-08-01",
      "name": "[format('{0}/{1}/{2}', parameters('dataLakeGen2Name'), 'default', 'interlocking-incoming')]",
      "dependsOn": [
        "[resourceId('Microsoft.Storage/storageAccounts', parameters('dataLakeGen2Name'))]"
      ]
    },
    {
      "type": "Microsoft.Storage/storageAccounts/blobServices/containers",
      "apiVersion": "2021-08-01",
      "name": "[format('{0}/{1}/{2}', parameters('dataLakeGen2Name'), 'default', 'interlocking-processing')]",
      "dependsOn": [
        "[resourceId('Microsoft.Storage/storageAccounts', parameters('dataLakeGen2Name'))]"
      ]
    },
    {
      "type": "Microsoft.Resources/deploymentScripts",
      "apiVersion": "2020-10-01",
      "name": "CreateAdlsDirectory",
      "location": "[parameters('location')]",
      "dependsOn": [
        "[resourceId('Microsoft.Storage/storageAccounts/blobServices/containers', parameters('dataLakeGen2Name'), 'default', 'interlocking-processing')]"
      ],
      "kind": "AzureCLI",
      "properties": {
        "azCliVersion": "2.30.0",
        "scriptContent": "az storage fs directory create -n failed -f interlocking-processing --account-name [parameters('dataLakeGen2Name')] --auth-mode login",
        "cleanupPreference": "OnSuccess",
        "retentionInterval": "PT1H"
      }
    }
]
关键说明
  • 先单独创建interlocking-processing容器,不要在容器资源中嵌套目录路径
  • 部署脚本资源通过dependsOn关联容器,确保容器创建完成后再执行目录创建命令
  • scriptContent中的命令使用az storage fs directory create,因为ADLS Gen2启用HNS后,容器对应为文件系统(fs),目录通过该命令创建
  • 如果需要创建多级目录,可修改命令为az storage fs directory create -n parent/child/failed -f interlocking-processing ...,会自动创建不存在的父目录

内容的提问来源于stack exchange,提问作者aadilp1910

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 01:57:18