如何在Terraform中为ADF JSON数据集正确添加字符串参数?
正确配置ADF数据集字符串参数的Terraform方法
你的代码报错核心原因是parameters块的写法不符合azurerm provider的要求,下面给出两种正确的配置方式:
方式1:使用map快速定义参数
适合仅需指定参数名和类型的场景:
resource "azurerm_data_factory_dataset_json" "reports_json" { name = "mydk-adf-dataset-reports-json-${var.regional_mapping[var.region]}-${var.env}" data_factory_id = azurerm_data_factory.reports_adf.id linked_service_name = azurerm_data_factory_linked_service_azure_blob_storage.reports_ls_storage.name # 正确写法:键为参数名,值为参数类型 parameters = { tempFile = "String" } azure_blob_storage_location { container = "reports" path = "temp/" filename = "@dataset().tempFile" dynamic_filename_enabled = true } encoding = "UTF-8" }
方式2:使用parameter块定义带默认值的参数
如果需要给参数设置默认值,用这种方式更灵活:
resource "azurerm_data_factory_dataset_json" "reports_json" { name = "mydk-adf-dataset-reports-json-${var.regional_mapping[var.region]}-${var.env}" data_factory_id = azurerm_data_factory.reports_adf.id linked_service_name = azurerm_data_factory_linked_service_azure_blob_storage.reports_ls_storage.name # 用parameter块配置参数,支持添加默认值 parameter { name = "tempFile" type = "String" default_value = "default_temp.json" # 可选配置,按需启用 } azure_blob_storage_location { container = "reports" path = "temp/" filename = "@dataset().tempFile" dynamic_filename_enabled = true } encoding = "UTF-8" }
错误说明
你原来的代码将name和type作为两个独立参数传入,这完全不符合provider对参数结构的定义。正确的逻辑是每个参数对应一个键值对(或一个parameter块),参数名作为标识,类型(及可选默认值)是参数的属性。
内容的提问来源于stack exchange,提问作者Dombi
相关产品推荐
相关产品推荐

