Basically count of keys and keys have to be equal on structures local.nat_gateways and local.compute_subnets.
So this means if a single NAT Gateway should be used for multiple subnets then the data structure of local.nat_gateways has to be expanded.
This might be a starting point:
locals {
nat_gateways = {
"AZ1" = { az = "eu-west-2a" } /* ,
"AZ2" = {az = "eu-west-2a"},
"AZ3" = {az = "eu-west-2a"} */
}
compute_subnets = {
"AZ1" = { cidr = "10.100.11.0/24", az = "eu-west-2a" },
"AZ2" = { cidr = "10.100.12.0/24", az = "eu-west-2b" },
"AZ3" = { cidr = "10.100.13.0/24", az = "eu-west-2c" }
}
trans_nat_gateways = { for ck, cv in local.compute_subnets : ck => {
az = try(local.nat_gateways[ck].az, local.nat_gateways["AZ1"].az)
}
}
}
output "trans" {
value = local.trans_nat_gateways
}