Reputation: 9387
How do I set if statement for data aws_acm_certificate. I get the following error when I add count for data aws_acm_certificate. I do not get the same error for resource "aws_lb_listener".
Because data.aws_acm_certificate.acm_certificate has "count" set, its attributes must be accessed on specific instances.
data "aws_acm_certificate" "acm_certificate" {
count = var.protocol!="TCP" ? 1 : 0
domain = var.certificate_domain_name
most_recent = true
}
resource "aws_lb_listener" "listener_https" {
count = var.protocol!="TCP" ? 1 : 0
load_balancer_arn = var.load_balancer_arn
port = "443"
protocol = "HTTPS"
ssl_policy = "ELBSecurityPolicy-2016-08"
certificate_arn = data.aws_acm_certificate.acm_certificate.arn
default_action {
type = "forward"
target_group_arn = var.target_group_arn
}
}
Upvotes: 0
Views: 324
Reputation: 9425
Because you have a count on your data, you need to access it as an array
certificate_arn = data.aws_acm_certificate.acm_certificate[0].arn
Alternatively, you could use a for_each for your resource Something like
resource "aws_lb_listener" "listener_https" {
for_each = data.aws_acm_certificate.acm_certificate
load_balancer_arn = var.load_balancer_arn
port = "443"
protocol = "HTTPS"
ssl_policy = "ELBSecurityPolicy-2016-08"
certificate_arn = each.value.arn
default_action {
type = "forward"
target_group_arn = var.target_group_arn
}
}
Upvotes: 1