11locals {
22 # Get distinct list of domains and SANs
3- distinct_domain_names = distinct (concat ([var . domain_name ], [for s in var . subject_alternative_names : replace (s, " *." , " " )]))
3+ distinct_domain_names = distinct (concat ([replace ( var. domain_name , " *. " , " " ) ], [for s in var . subject_alternative_names : replace (s, " *." , " " )]))
44
55 # Copy domain_validation_options for the distinct domain names
6- validation_domains = var. create_certificate ? [for k , v in aws_acm_certificate . this [0 ]. domain_validation_options : tomap (v) if contains (local. distinct_domain_names , replace (v. domain_name , " *." , " " ))] : []
6+ validation_domains = var. create_certificate ? [for k , v in aws_acm_certificate . this [0 ]. domain_validation_options : tomap (v) if contains (local. distinct_domain_names , replace (v. domain_name , " \\ *\\ ." , " " ))] : []
7+
8+ host_to_zone_regex = " /^(?:.*\\ .)?([^.]+\\ .[^.]+)$/"
9+ zone_id_map = zipmap (local. distinct_domain_names , data. aws_route53_zone . this . * . zone_id )
10+ }
11+
12+ data "aws_route53_zone" "this" {
13+ count = length (local. distinct_domain_names )
14+
15+ name = replace (local. distinct_domain_names [count . index ], local. host_to_zone_regex , " $1" )
16+ private_zone = false
717}
818
919resource "aws_acm_certificate" "this" {
@@ -25,9 +35,9 @@ resource "aws_acm_certificate" "this" {
2535}
2636
2737resource "aws_route53_record" "validation" {
28- count = var. create_certificate && var. validation_method == " DNS" && var. validate_certificate ? length (local. distinct_domain_names ) + 1 : 0
38+ count = var. create_certificate && var. validation_method == " DNS" && var. validate_certificate ? length (local. distinct_domain_names ) : 0
2939
30- zone_id = var. zone_id
40+ zone_id = lookup (local . zone_id_map , element (local . validation_domains , count . index )[ " domain_name " ], var. zone_id )
3141 name = element (local. validation_domains , count. index )[" resource_record_name" ]
3242 type = element (local. validation_domains , count. index )[" resource_record_type" ]
3343 ttl = var. dns_ttl
0 commit comments