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

Terraform中如何根据指定子串获取列表变量中的对应元素?

在Terraform中过滤包含指定子串的列表元素

嘿,这个需求在Terraform里处理起来很简单,我给你分享两种实用的方法:

方法一:基础子串匹配(精确大小写)

最直接的方式是用for表达式结合contains函数来过滤列表,代码示例如下:

variable "mylist" { 
  default = ["cardigan.com", "crazy-apple.com", "blue-pen.com"] 
}

locals {
  # 过滤出包含"apple"子串的元素
  apple_matching_items = [for item in var.mylist : item if contains(item, "apple")]
}

代码解释:

  • 我们通过for遍历var.mylist中的每一个元素
  • contains(item, "apple")会检查当前元素是否包含指定的"apple"子串,返回布尔值
  • 只有满足条件的元素会被收集到local.apple_matching_items这个局部变量中

之后你就可以在资源定义里直接引用这个局部变量了,比如如果确定列表里只有一个匹配项,你可以用local.apple_matching_items[0]来获取单个元素。

方法二:大小写不敏感的子串匹配

如果需要忽略大小写(比如要匹配"Apple"、"APPLE"这类变体),可以结合lower函数统一转换为小写后再判断:

locals {
  # 忽略大小写过滤包含"apple"子串的元素
  apple_matching_items_case_insensitive = [
    for item in var.mylist : item 
    if contains(lower(item), "apple")
  ]
}

这种写法会先把每个元素转为小写,再检查是否包含小写的"apple",能覆盖更多匹配场景。

需要注意的是,这两种方法都要求Terraform版本在0.12及以上,这也是目前主流的版本啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 11:54:05