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

Terraform创建Azure ADF自定义数据集报参数定义错误排查

报错原因

这个报错是Terraform HCL配置语法解析失败导致的,核心问题出在多行字符串(heredoc)的书写不符合语法规则:

  • 定义type_properties_json时使用了<<JSON开头的多行字符串语法,该写法要求闭合标记JSON必须顶格书写,前面不能带任何空格、缩进
  • 原代码中闭合用的JSON前面带有前置空格,Terraform没有识别到多行字符串已经结束,把后续的parameters等配置块都当成了字符串内的普通文本解析,最终触发参数定义格式错误。
修复方案

两种修改方式二选一即可:

  • 保留现有<<JSON写法,把闭合的JSON标记移动到行首,去掉所有前置缩进
  • 把多行字符串开头标记改成<<-JSON(带横杠的heredoc语法),这种写法允许闭合标记前带缩进,不会触发解析错误

修复后可正常运行的完整代码如下:

resource "azurerm_data_factory_custom_dataset" "datalakesink" {
  name            = "${var.dataset_name}_datalakesink"
  data_factory_id = azurerm_data_factory.adf.id
  type            = "Parquet"

  linked_service {
    name = "${var.applicationName}-${var.environment}-storagels"
  }

  type_properties_json = <<JSON
  {
    "location": {
        "type": "AzureBlobFSLocation",
        "fileName": {
            "value": "@dataset().tablename",
            "type": "Expression"
        },
        "folderPath": "Storage/Bronze/Datalake",
        "fileSystem": "casedetailfact"
    }
  }
JSON

  parameters = {
    tablename = ""
  }
 
  additional_properties = {}
  annotations = []

  lifecycle {
    ignore_changes = [data_factory_id]
  }

  depends_on = [
    azurerm_resource_group.myresourcegroup,
    azurerm_data_factory.adf,
    azurerm_data_factory_integration_runtime_self_hosted.ir,
    azurerm_data_factory_linked_custom_service.clihive-linked-service
  ]
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 18:24:30