函数调用中的 Terraform OCI 错误 "map" 函数在 Terraform 中已弃用?
Terraform OCI Error in function call the "map" function was deprecated in Terraform?
为什么会出现以下错误?
使用 Terraform 并遵循官方发布的指南 here 我正在尝试在 OCI 上创建一个简单的隔间并收到以下错误:
│ Error: Error in function call │ │ on
.terraform/modules/iam_compartment/modules/iam-compartment/main.tf
line 36, in locals: │ 36: parent_compartment_ids =
concat(flatten(data.oci_identity_compartments.this.*.compartments),
list(map("compartment_id", ""))) │ │ Call to function "map" failed:
the "map" function was deprecated in Terraform v0.12 and is no longer
available; use tomap({ ... }) syntax to write a literal map.
我的地形 main.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
}
版本:
Terraform v1.1.3 on darwin_amd64
- provider registry.terraform.io/hashicorp/oci v4.59.0
- provider registry.terraform.io/hashicorp/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", "")))
}
此外,针对此问题有一个 issue 报告,最近没有任何 activity。
因为这个模块来自第三方,你可以做的是在 GitHub 上分叉它,并将 map
函数更改为 tomap
。有可能,您可以使用修复程序创建拉取请求。
其他选择是去掉这个模块,自己构建它的功能。
为什么会出现以下错误?
使用 Terraform 并遵循官方发布的指南 here 我正在尝试在 OCI 上创建一个简单的隔间并收到以下错误:
│ Error: Error in function call │ │ on .terraform/modules/iam_compartment/modules/iam-compartment/main.tf line 36, in locals: │ 36: parent_compartment_ids = concat(flatten(data.oci_identity_compartments.this.*.compartments), list(map("compartment_id", ""))) │ │ Call to function "map" failed: the "map" function was deprecated in Terraform v0.12 and is no longer available; use tomap({ ... }) syntax to write a literal map.
我的地形 main.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
}
版本:
Terraform v1.1.3 on darwin_amd64
- provider registry.terraform.io/hashicorp/oci v4.59.0
- provider registry.terraform.io/hashicorp/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", "")))
}
此外,针对此问题有一个 issue 报告,最近没有任何 activity。
因为这个模块来自第三方,你可以做的是在 GitHub 上分叉它,并将 map
函数更改为 tomap
。有可能,您可以使用修复程序创建拉取请求。
其他选择是去掉这个模块,自己构建它的功能。