Size: a a a

2019 September 06

AK

Andrey Kartashov in terraform_ru
inqfen
Так в key же объект а не индекс? Или он сам индексы у объектов возьмёт?
как то так
resource "aws_acm_certificate" "static_cert" {
 for_each = toset("${var.static_domain}")

 provider = aws.cert
 domain_name       = "${each.key}"
 validation_method = "DNS"
}

resource "aws_route53_record" "cert_validation" {
 for_each = toset("${var.static_domain}")

 name    = aws_acm_certificate.static_cert[each.key].domain_validation_options.0.resource_record_name
 type    = aws_acm_certificate.static_cert[each.key].domain_validation_options.0.resource_record_type
 zone_id = data.aws_route53_zone.zone.id
 records = [aws_acm_certificate.static_cert[each.key].domain_validation_options.0.resource_record_value]
 ttl     = 60
}

resource "aws_acm_certificate_validation" "static_cert" {
 for_each = toset("${var.static_domain}")

 provider = aws.cert
 certificate_arn         = aws_acm_certificate.static_cert[each.key].arn
 validation_record_fqdns = [aws_route53_record.cert_validation[each.key].fqdn]
}
источник

i

inqfen in terraform_ru
Andrey Kartashov
лучше вообще в каждом наборе ресурсов использовать один и тот же for_each с доменами
так в том-то и дело, в домене arn нет
источник

i

inqfen in terraform_ru
мне нужно использовать объект aws_acm_certificate
источник

AK

Andrey Kartashov in terraform_ru
где ты увидел что я беру arn из домена?
источник

i

inqfen in terraform_ru
resource "aws_acm_certificate_validation" "static_cert" {
 for_each = toset("${var.static_domain}")

 provider = aws.cert
 certificate_arn         = aws_acm_certificate.static_cert[each.key].arn
источник

AK

Andrey Kartashov in terraform_ru
ну так это сертификат
источник

i

inqfen in terraform_ru
resource "aws_acm_certificate_validation
источник

i

inqfen in terraform_ru
а foreach в нем по доменам
источник

AK

Andrey Kartashov in terraform_ru
и что?
источник

AK

Andrey Kartashov in terraform_ru
а arn берётся из aws_acm_certificate
источник

AK

Andrey Kartashov in terraform_ru
внимательно смотри
источник

i

inqfen in terraform_ru
а, понял
источник

AK

Andrey Kartashov in terraform_ru
ура :)
источник

VT

Victor Tur in terraform_ru
inqfen
а, понял
вот поэтому срочно требуется пиво.
тяпница, время к вечеру - пора 😎
источник

AK

Andrey Kartashov in terraform_ru
итого у тебя будет три ресурса для каждого домена
aws_acm_certificate.static_cert["domain.com"]
aws_route53_record.cert_validation["domain.com"]
aws_acm_certificate_validation.static_cert["domain.com"]
источник

i

inqfen in terraform_ru
переделал так, но тоже падает

Because aws_acm_certificate_validation.static_cert has \"for_each\" set, its\nattributes must be accessed on specific instances.
источник

i

inqfen in terraform_ru
resource "aws_route53_record" "cert_validation" {
 for_each = toset("${var.static_domain}")

 name    = "${aws_acm_certificate.static_cert[each.key].domain_validation_options.0.resource_record_name}"
 type    = "${aws_acm_certificate.static_cert[each.key].domain_validation_options.0.resource_record_type}"
 zone_id = "${data.aws_route53_zone.zone.id}"
 records = ["${aws_acm_certificate.static_cert[each.key].domain_validation_options.0.resource_record_value}"]
 ttl     = 60
}

resource "aws_acm_certificate_validation" "static_cert" {
 for_each = toset("${var.static_domain}")

 provider = aws.cert
 certificate_arn         = aws_acm_certificate.static_cert[each.key].arn
 validation_record_fqdns = [aws_route53_record.cert_validation[each.key].fqdn]
}
источник

i

inqfen in terraform_ru
это текущее состояние конфига
источник

i

inqfen in terraform_ru
Самое главное он еще и советует

For example, to correlate with indices of a referring resource, use: aws_acm_certificate_validation.static_cert[each.key]
источник

i

inqfen in terraform_ru
и именно так и написано
источник