Terraform module that issues ACM certificates for explicit domain names (no implicit wildcard on the primary or optional extras). DNS validation uses Route 53 when you supply hosted zone IDs.
- Primary certificate — Always created for
domain_name(the exact string passed toaws_acm_certificate). - Optional extra certificates —
domain_namesis a map ofdomain => route53_zone_id. Each key gets its own cert for that exact domain (not*.<domain>). Keys equal todomain_nameare ignored. - Validation — When
create_route53_validation_recordsistrue(default) and a zone ID is provided (r53_zone_idfor the primary, or a non-empty value indomain_names), the module creates the DNS validation record and waits onaws_acm_certificate_validation. Setcreate_route53_validation_records = falseto skip Route 53 records and validation entirely (certificates are still created). An empty zone ID also skips validation for that certificate.
| Name | Description |
|---|---|
domain_name |
Primary certificate SAN/domain (required, non-empty). |
r53_zone_id |
Hosted zone ID for primary DNS validation (default ""). |
create_route53_validation_records |
Create Route 53 validation records and wait for ACM validation when zone IDs are set (default true). |
domain_names |
Optional map of extra domain → zone ID for additional certs (default {}). |
| Name | Description |
|---|---|
acm_certificate_arn |
Validated primary ARN when only the primary cert exists (cert_count == 1); otherwise null. Uses validated ARN when r53_zone_id != "". |
acm_certificate_arns |
Map of domain name → ARN: primary under domain_name, plus one entry per domain_names key (validated ARN when zone ID is set, else bare certificate ARN). |
module "acm" {
source = "git::ssh://git@gitlab.itgix.com/educatedguessteam/tf-modules/tf-module-acm.git?ref=main"
domain_name = "api.example.com"
r53_zone_id = "Z00955992K1ILTFSNJ91B"
}Use when DNS validation is managed outside this module (e.g. another DNS provider):
module "acm" {
source = "git::ssh://git@gitlab.itgix.com/educatedguessteam/tf-modules/tf-module-acm.git?ref=main"
domain_name = "api.example.com"
create_route53_validation_records = false
}module "acm" {
source = "git::ssh://git@gitlab.itgix.com/educatedguessteam/tf-modules/tf-module-acm.git?ref=main"
domain_name = "api.example.com"
r53_zone_id = "Z00955992K1ILTFSNJ91B"
domain_names = {
"other.example.com" = "" # Leave empty if you don't use route53 for this domain
"app.example.net" = "Zxxxxxxxxxxxxxxxxxxxx"
}
}module "acm" {
for_each = var.acm_certificates
source = "git::ssh://git@gitlab.itgix.com/educatedguessteam/tf-modules/tf-module-acm.git?ref=main"
domain_name = each.value.domain_name
r53_zone_id = each.value.r53_zone_id
domain_names = try(each.value.domain_names, {})
}acm_certificates = {
alb-cert-1 = {
domain_name = "tg1.itgix.eduguess.space"
r53_zone_id = "Z00955992K1ILTFSNJ91B"
domain_names = {}
}
alb-cert-2 = {
domain_name = "tg2.itgix.eduguess.space"
r53_zone_id = "Z00955992K1ILTFSNJ91B"
}
}- Add
create_route53_validation_recordsto optionally skip Route 53 DNS validation records andaws_acm_certificate_validation. - Primary validation now respects empty
r53_zone_id(previously always created a Route 53 record). - Optional
domain_namesmap for multiple certs; internal local renamed toadditional_certs. - Primary validation resource depends on the Route 53 validation record for safer destroy ordering.
- Outputs:
acm_certificate_arnsusesadditional_certs; behaviour documented above.
- Initial version: ACM certificate for a domain with Route 53–backed DNS validation.