Terraform OCI数据源按Defined/Freeform Tags过滤失效求助
解决Terraform OCI Compartment标签过滤无结果的问题
问题分析与修复方案
1. 正则表达式语法错误
你当前使用的["default/*"]不符合正则语法规则:
- 正则里的
*是量词(匹配前面元素0次或多次),不是通配符。如果要匹配default/开头的任意内容,应该改用default/.+(匹配至少一个后续字符)或default/.*(匹配0个或多个后续字符)。
修正后的filter配置:
data "oci_identity_compartments" "this" { compartment_id = "....." access_level = "ANY" compartment_id_in_subtree = true filter { name = "defined_tags:Oracle-Tags.CreatedBy" values = ["default/.+"] regex = true } }
2. 标签路径格式适配
部分OCI Terraform Provider版本中,嵌套标签的过滤路径需要用点分隔而非冒号,可尝试调整name字段格式:
filter { name = "defined_tags.Oracle-Tags.CreatedBy" values = ["default/.+"] regex = true }
3. 验证目标标签的存在性
先移除filter配置,执行terraform console查看返回的compartment原始数据,确认目标compartment的defined_tags.Oracle-Tags.CreatedBy值确实符合匹配规则:
terraform console > data.oci_identity_compartments.this.compartments[*].defined_tags
检查输出中是否存在包含Oracle-Tags.CreatedBy且值以default/开头的条目。
4. 升级OCI Provider版本
旧版本的OCI Terraform Provider可能存在标签过滤的兼容性问题,建议升级到最新稳定版本:
在配置文件中更新版本约束:
terraform { required_providers { oci = { source = "oracle/oci" version = ">= 5.0.0" # 使用官方最新稳定版 } } }
执行terraform init -upgrade完成provider升级。
内容的提问来源于stack exchange,提问作者jschelfh
相关产品推荐
相关产品推荐

