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
相关产品推荐
相关产品推荐

