在Terraform中配置OCI Defined Tags报错,如何正确设置?
问题原因及解决方案
错误的核心是OCI的Defined Tags格式要求与AWS不同,你当前的写法不符合OCI Terraform Provider对defined_tags的结构规范:
- AWS标签是简单键值对,但OCI的Defined Tags要求两层嵌套结构:第一层是标签命名空间(Namespace),第二层是该命名空间下的具体键值对。
- 直接写
Lifecycle = "persistent"属于结构错误,Terraform无法识别该格式。
修正后的代码示例
如果已经存在名为MyNamespace的标签命名空间(需提前在OCI控制台或通过Terraform创建),修改defined_tags部分如下:
resource "oci_core_public_ip" "public-ip-address-1" { compartment_id = oci_identity_compartment.tf-compartment.id display_name = "reserved public ip" lifetime = "RESERVED" private_ip_id = data.oci_core_private_ips.attach-public-ip-address-1.private_ips[0]["id"] defined_tags = { # 格式:"命名空间" = { "键" = "值" } "MyNamespace" = { "Lifecycle" = "persistent" } } lifecycle { prevent_destroy = true } }
关于标签声明的疑问
不需要在额外地方声明标签,但必须确保使用的标签命名空间已在OCI租户中存在。如果还没有对应命名空间,可先创建:
resource "oci_identity_tag_namespace" "my_tag_namespace" { compartment_id = oci_identity_compartment.tf-compartment.id name = "MyNamespace" description = "管理资源生命周期的标签命名空间" }
内容的提问来源于stack exchange,提问作者paradroid
相关产品推荐
相关产品推荐

