如何在Terraform中提取指定字符串的前两段内容?
Terraform提取字符串前两段的实现方法
你的问题出在两个地方:一是Terraform的列表索引从0开始,二是Terraform不支持用[1,2]这种逗号分隔的方式同时取多个列表元素。
正确的实现可以通过split+slice+join三个函数组合完成:
# 直接针对示例字符串的写法 join(":", slice(split(":", "sg:dev:crm"), 0, 2))
分步解释:
split(":", "sg:dev:crm")将字符串按冒号拆分,得到列表["sg", "dev", "crm"]slice(..., 0, 2)截取列表的前2个元素(左闭右开规则,取索引0和1),得到["sg", "dev"]join(":", ...)将截取后的列表用冒号拼接,最终得到"sg:dev"
如果这个字符串来自YAML变量(假设变量名为var.your_yaml_string),只需替换示例字符串为变量:
join(":", slice(split(":", var.your_yaml_string), 0, 2))
另外也可以用正则匹配的方式,适合明确知道字符串格式的场景:
regex("^([^:]+:[^:]+)", "sg:dev:crm").0
不过slice+join的写法更通用,哪怕字符串段数后续变化,只要取前两段都能生效。
内容的提问来源于stack exchange,提问作者Felixrobin antony
相关产品推荐
相关产品推荐

