我正在嘗試訪問 terraform 地圖列表中的列表。結構如下:
dynamic.tfvars
--------------
nacl=[
{
"vpc_name" = "vpc1"
"acl_name" = "acl1"
"subnet_name" = ["sub1-az1","sub2-az2"]
},
{
"vpc_name" = "vpc2"
"acl_name" = "acl2"
"subnet_name" = ["sub1-az1","sub2-az2"]
}
]
我正在嘗試從我的子模塊中的地圖列表中獲取“subnet_name”(列表),但它不起作用。下面是我正在使用的一段代碼。
main.tf
-------
data "aws_vpc" "vpc_nacl" {
count = length(var.nacl[*])
filter {
name = "tag:Name"
values = [element(var.nacl[*]["vpc_name"],count.index)]
}
}
locals {
lcl_vpc_nacl = data.aws_vpc.vpc_nacl.*.id
}
data "aws_subnet_ids" "example" {
count = length(var.nacl[*]["subnet_name"])
vpc_id = element(local.lcl_vpc_nacl,count.index)
filter {
name = "tag:Name"
values = [element(var.nacl[*]["subnet_name"],count.index)]
}
}
執行 terraform 計劃時出現以下錯誤。
│ Error: Incorrect attribute value type
│
│ on Modules\NACL\Main.tf line 28, in data "aws_subnet_ids" "example":
│ 28: values = [element(var.nacl[*]["subnet_name"],count.index)]
│ ├────────────────
│ │ count.index is 1
│ │ var.nacl is list of object with 5 elements
│
│ Inappropriate value for attribute "values": element 0: string required.
任何修復或建議將不勝感激。提前致謝。
從aws_subnet_ids數據源文檔中,我看到values
了filter
期望的集合。
看起來你幾乎在那裡的代碼,但你正在傳遞一個列表列表,values
這就是你有這個錯誤的原因。
element((var.nacl[*]["subnet_name"]), count.index)
以列表的格式提取子網列表。
您所需要的只是轉換為 set 並在沒有方括號的情況下傳遞,如下所示..
main.tf
-------
data "aws_subnet_ids" "example" {
count = length(var.nacl[*]["subnet_name"])
vpc_id = element(local.lcl_vpc_nacl,count.index)
filter {
name = "tag:Name"
values = toset(element((var.nacl[*]["subnet_name"]), count.index))
}
}
試一試,讓我知道這是否有幫助..
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句