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

Terraform模块能否直接引用launchdarkly_provider的资源类型定义变量

结论

目前Terraform类型系统不支持直接引用Provider定义的资源类型作为变量的类型约束,你示例中期望的map(launchdarkly_feature_flags)写法暂时无法实现。
LaunchDarkly Provider的launchdarkly_feature_flag资源的Schema定义是Provider内部实现的一部分,并没有作为可直接引用的HCL类型暴露给Terraform配置层使用。


替代实现方案

如果要实现类型安全校验,你可以用以下两种方式替代map(any)写法:

方案1:自定义匹配资源结构的object类型

按照你实际用到的launchdarkly_feature_flag资源字段,自定义对应的object结构约束:

variable "feature_flags" {
  type = map(object({
    key            = string
    name           = string
    project        = string
    variation_type = string
    description    = optional(string)
    tags           = optional(list(string))
    temporary      = optional(bool, true)
    # 其他你需要用到的launchdarkly_feature_flag对应字段按需补全
  }))
  default = {}
}

你可以根据自己实际用到的字段增删object内的属性,可选字段可以用Terraform 0.14+支持的optional()修饰,还可以直接设置默认值。

方案2:增加自定义校验规则(可选)

如果需要更严格的逻辑校验,可以额外搭配validation块做规则校验,比如校验flag key的命名格式、枚举值校验等:

variable "feature_flags" {
  type = map(object({
    key            = string
    name           = string
    project        = string
    variation_type = string
  }))

  validation {
    condition     = alltrue([for k, v in var.feature_flags : length(regexall("^[a-z0-9-_]+$", v.key)) > 0])
    error_message = "所有feature flag的key只能包含小写字母、数字、短横线和下划线。"
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 12:45:02