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

如何从Terraform变量config_settings中获取指定字段值?

Terraform 提取 config_settings 中指定字段值的方法

你的 config_settings 变量是一个对象列表,每个对象嵌套了多层结构,要提取 pin_connection_details 和 pin_task_position,得根据它们的嵌套层级来遍历取值,具体方法如下:

提取 pin_connection_details

这个字段在 pin_config.pin_types(map 类型)的每个元素里,需要先遍历 config_settings 列表,再遍历每个配置项里的 pin_types 键值对:

提取所有非空的 pin_connection_details

locals {
  all_pin_connection_details = flatten([
    for config in var.config_settings : [
      for pin_type in config.pin_config.pin_types : pin_type.pin_connection_details
      if pin_type.pin_connection_details != null
    ]
  ])
}
  • 外层遍历 config_settings 里的每个配置对象
  • 内层遍历每个配置的 pin_types map,取出 pin_connection_details
  • 用 if 过滤掉 null 值,flatten 把嵌套列表转为一维列表

提取指定配置、指定引脚的 pin_connection_details

如果要精准获取某个配置(比如 name 为 prod-config)下某个引脚(比如 pin_types 的键为 uart-pin)的字段值:

locals {
  target_connection_detail = [
    for config in var.config_settings : [
      for pin_key, pin_type in config.pin_config.pin_types : pin_type.pin_connection_details
      if config.name == "prod-config" && pin_key == "uart-pin"
    ]
  ][0][0]
}
  • 通过 if 条件筛选目标配置和引脚,最后用 [0][0] 取出第一个匹配结果(确保只有一个匹配项时可用)

提取 pin_task_position

这个字段在 pin_tasks(列表类型)的每个任务对象里,遍历方式类似:

提取所有非空的 pin_task_position

locals {
  all_pin_task_positions = flatten([
    for config in var.config_settings : [
      for task in config.pin_tasks : task.pin_task_position
      if task.pin_task_position != null
    ]
  ])
}

提取指定任务名称的 pin_task_position

如果要获取任务名称为 data-sync-task 的位置信息:

locals {
  target_task_position = [
    for config in var.config_settings : [
      for task in config.pin_tasks : task.pin_task_position
      if task.pin_task_name == "data-sync-task"
    ]
  ][0][0]
}

注意事项

因为这两个字段都是可选字段(默认值为 null),使用时建议用 coalesce 函数设置默认值,避免 null 引发问题:

# 给目标字段设置默认值
coalesce(local.target_connection_detail, "no-connection-info")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 20:56:14