大地 OCI 函数调用中的错误 "map"函数在大地形态中已弃用?



为什么会出现以下错误?

使用Terraform并遵循官方发布的指南,我试图在OCI上创建一个简单的隔间,并得到以下错误:

│错误:函数调用出错│ │在…上.terraform/modules/iam_compartment/modules/iam compartment/main.tf第36行,当地语:│36:pparent_compartment_ids=concat(flatten(data.oci_identity_compartments.this.*.compartments(,list(map("compartment_id","((│ │调用函数";地图";失败:";地图";函数在Terraform v0.12中已弃用,现在不再使用可获得的使用tomap({…}(语法来编写文字映射。

我的地形主.tf文件:

module "iam_compartment" {
source                  = "oracle-terraform-modules/iam/oci//modules/iam-compartment"
version = "2.0.1"
tenancy_ocid            = var.provider.tenancy_id
compartment_id          = var.provider.tenancy_id
compartment_name        = "tf_example_compartment"
compartment_description = "compartment created by terraform"
compartment_create      = true
enable_delete           = true
}

版本:

darwin_amd64 上的Terraform v1.1.3

  • 提供者registry.terraform.io/hashicorp/oci v4.59.0
  • provider registry.terraform.io/hasicorp/template v2.2.0

重新创建的步骤

  • 地形初始化
  • 地形平面图

您使用的模块不是最新的Terraform版本。此外,它包含的代码是不向前兼容的。

正如错误所说,Terraform中的map函数被弃用,取而代之的是tomap函数。如果我们看一下GitHub上模块的源代码,它使用的是map函数:

locals {
compartment_ids        = concat(flatten(data.oci_identity_compartments.this.*.compartments), list(map("id", "")))
parent_compartment_ids = concat(flatten(data.oci_identity_compartments.this.*.compartments), list(map("compartment_id", "")))
}

此外,该问题报告了一个问题,但最近没有任何活动。

由于该模块来自第三方,所以您可以在GitHub上分叉它,并将map函数修改为tomap。有可能,您可以使用修复程序创建pull请求。

另一种选择是去掉这个模块,自己构建它的功能。

最新更新