Я пытаюсь создать несколько сертификатов ACM из заданной переменной.
Вот сокращенный файл terraform, который я пытаюсь использовать:
variable "prod_hostnames"
type = "list"
default = ["first.com", "second.com"]
}
resource "aws_acm_certificate" "prod-certificate" {
count = "${length(var.prod_hostnames)}"
domain_name = "${var.prod_hostnames[count.index]}"
validation_method = "DNS"
}
resource "aws_route53_record" "prod-certificate-validation" {
count = "${length(var.prod_hostnames)}"
zone_id = "${var.zone_dns}"
ttl = "60"
name = "${element(aws_acm_certificate.prod-certificate.*.domain_validation_options.0.resource_record_name, count.index)}"
type = "${element(aws_acm_certificate.prod-certificate.*.domain_validation_options.0.resource_record_type, count.index)}"
records = ["${element(aws_acm_certificate.prod-certificate.*.domain_validation_options.0.resource_record_value, count.index)}"]
}
Поиск в aws_route53_record.prod-certificate-validation
не работает, так как не представляется возможным извлечь domain_validation_options.0.resource_record_name
из списка aws_acm_certificate.prod-certificate
, он завершается с этим сообщением об ошибке:
Resource 'aws_acm_certificate.prod-certificate' does not have attribute 'domain_validation_options.0.resource_record_type' for variable 'aws_acm_certificate.prod-certificate.*.domain_validation_options.0.resource_record_type'
Есть ли способ сделать то, чего я пытаюсь достичь? Я бы хотел не указывать столько aws_acm_certificate
ресурсов, сколько у нас есть имена хостов.
[ПРАВИТЬ] Если я удалю ресурс aws_route53_record, terraform state list
даст:
module.hashistack.aws_acm_certificate.prod-certificate[0]
module.hashistack.aws_acm_certificate.prod-certificate[1]
и terraform state show 'module.hashistack.aws_acm_certificate.prod-certificate[0]'
дает:
id = arn:aws:acm:eu-central-1:[redacted]
arn = arn:aws:acm:eu-central-1:[redacted]
domain_name = *.first.com
domain_validation_options.# = 1
domain_validation_options.0.domain_name = *.first.com
domain_validation_options.0.resource_record_name = _6f6a73ceb8bbe016a0c522c148e39b3b.first.com.
domain_validation_options.0.resource_record_type = CNAME
domain_validation_options.0.resource_record_value = _d6b3b1c60261a201476820a3517a3ed5.acm-validations.aws.
subject_alternative_names.# = 0
tags.% = 0
validation_emails.# = 0
validation_method = DNS