I have to created multiple EC2 and ALB using count. ALB was created as follows:
module "ex-alb" {
source = "alb-module/aws"
# Count set to 3
count = var.ex_count
load_balancer_type = "Application"
vpc_id = var.vpc_id_internal
subnets = var.ex_double_subnet_ids[count.index % length(var.ex_subnet_ids)]
security_groups = concat(data.aws_security_groups.sg_AAA.ids, data.aws_security_groups.sg_BBB.ids)
target_groups = [
{
name_prefix = "alb-"
backend_protocol = "HTTPS"
backend_port = 8443
targets = [
{
target_id = aws_instance.ex-ec2[count.index].id
port = 8443
}
]
}
]
https_listeners = var.alb_https_listeners
internal = "internal"
tags = module.label.tags
name = lower("SH-alb-${count.index+1}")
idle_timeout = var.idle_timeout
}
Now I want to output some of its attributes but it's not working:
output "ex_alb_map" {
value = { for i in module.ex-alb: i.Name => "${i.lb_id}:${i.lb_dns_name}:${i.security_group_id}"}}
}
Error: Unsupported attribute on ex_outputs.tf line 20, in output "ex_alb_map": 20: value = { for i in module.ex-alb: i.Name => "${i.lb_id}:${i.lb_dns_name}:${i.security_group_id}" } This object does not have an attribute named "Name".
output "ex_alb_map" {
value = { for i in module.ex-alb: "${i.lb_id}:${i.lb_dns_name}:${i.security_group_id}"}}
}
Error: Invalid 'for' expression
on ex_outputs.tf line 20, in output "ex_alb_map": 20: value = { for i in module.ex-alb: "${i.lb_id}:${i.lb_dns_name}:${i.security_group_id}" }
Key expression is required when building an object.
I want to print all ALB names, IDs and DNS.
I added something similar for my ec2 instances which is working but not able to do it for ALB.
output "ex_ec2_map" {
value = { for i in aws_instance.ex-ec2: i.tags.Name => "${i.id}:${i.private_ip}:${i.availability_zone}:${i.subnet_id}" }
}