试图将计数重构为for_each,并在这方面遇到困难。
local = {
routes = [
{
CIDR = "192.225.0.0/16"
Name = "rt-1"
},
{
CIDR = "192.225.0.0/16"
Name = "rt-2"
},
{
CIDR = "192.225.1.0/16"
Name = "rt-1"
},
{
CIDR = "192.225.1.0/16"
Name = "rt-2"
},
{
CIDR = "192.225.0.0/16"
Name = "rt-3"
}
]
}
Works:
resource "aws_route" "sample" {
count = length(local.routes)
route_table_id = local.routes[count.index].Name
destination_cidr_block = local.routes[count.index].CIDR
}
Don't Work:
resource "aws_route" "sample" {
for_each = local.routes
route_table_id = local.routes[count.index].Name
destination_cidr_block = local.routes[count.index].CIDR
}获得此错误时,给定的"for_each“参数值是不合适的:"for_each”参数必须是一个映射或一组字符串,并且您已经提供了一个元组类型的值。
如果我改变我的本地地图,然后它抱怨重复,任何帮助。
发布于 2022-10-13 17:01:56
for_each元参数接受一个映射或一组字符串,而不是列表,您正在尝试传递一个列表。你可以这样做:
resource "aws_route" "sample" {
for_each = { for entry in local.routes : "${entry.Name}.${entry.CICR}" => entry }
route_table_id = each.value.Name
destination_cidr_block = each.value.CIDR
}阅读有关for_each:https://www.terraform.io/language/meta-arguments/for_each#basic-syntax的更多信息
https://stackoverflow.com/questions/74058939
复制相似问题