Terraform에 의한 DNS 인증 레코드 등록에서 "Invalid index"오류
유효하지 않은 색인 오류
이전에 실행한 적이 있는 코드를 바탕으로 오랫동안 ACM의 DNS 인증을 시도하면 "Error: Invalid index"오류가 발생했습니다. This value does not have any indices. → 이 값에는 인덱스가 없습니다. 그리고 화가났다.
코드는 이쪽. domain_validation_options[0]
의 부분이 안 되는 것 같습니다.
################################
# ACM
################################
resource "aws_acm_certificate" "public" {
domain_name = aws_route53_zone.public.name
subject_alternative_names = ["*.${aws_route53_zone.public.name}"]
validation_method = "DNS"
lifecycle {
create_before_destroy = true
}
tags = {
Name = aws_route53_zone.public.name
}
}
resource "aws_route53_record" "public_dns_verify" {
name = aws_acm_certificate.public.domain_validation_options[0].resource_record_name
type = aws_acm_certificate.public.domain_validation_options[0].resource_record_type
records = [aws_acm_certificate.public.domain_validation_options[0].resource_record_value]
zone_id = aws_route53_zone.public.id
ttl = 60
}
resource "aws_acm_certificate_validation" "public" {
certificate_arn = aws_acm_certificate.public.arn
validation_record_fqdns = [aws_route53_record.public_dns_verify.fqdn]
}
원인
아래의 기사에 알기 쉽게 쓰고 있었습니다. domain_validation_options
의 형태가 바뀐 것 같습니다.
Terraform에서 AWS Certificate Manager 무료 인증서 발급
domain_validation_options 는 다음과 같은 형태로 반환됩니다. 확실히 본 느낌 list 타입입니다만, 3.0.0 이후에서는 set 타입으로 변경되고 있습니다.
해결 방법
앞의 기사를 참고로 domain_validation_options
의 개소를 for_each
에 재기입했습니다.for_each
의 사용법은 아직 잘 모르기 때문에, 이것으로 형 문제가 해소되고 있는 이유도 아직 배고프지 않았습니다만, 일단 움직이게 되었습니다. .
resource "aws_route53_record" "public_dns_verify" {
for_each = {
for dvo in aws_acm_certificate.public.domain_validation_options : dvo.domain_name => {
name = dvo.resource_record_name
record = dvo.resource_record_value
type = dvo.resource_record_type
}
}
allow_overwrite = true
name = each.value.name
records = [each.value.record]
ttl = 60
type = each.value.type
zone_id = aws_route53_zone.public.id
}
resource "aws_acm_certificate_validation" "public" {
certificate_arn = aws_acm_certificate.public.arn
validation_record_fqdns = [for record in aws_route53_record.public_dns_verify : record.fqdn]
}
다음 기사에 쓰여진 것처럼 tolist
에서 형식 변환하고 대처하는 방법도 있는 것 같습니다.
Terraform의 버전 업으로 Invalid index가 나왔을 때의 대처
name = tolist(aws_acm_certificate.public.domain_validation_options)[0].resource_record_name
type = tolist(aws_acm_certificate.public.domain_validation_options)[0].resource_record_type
records = [tolist(aws_acm_certificate.public.domain_validation_options)[0].resource_record_value]
참고 링크
Terraform에서 AWS Certificate Manager 무료 인증서 발급
Terraform의 버전 업으로 Invalid index가 나왔을 때의 대처
Resource: acm_certificate
Resource: acm_certificate_validation
Reference
이 문제에 관하여(Terraform에 의한 DNS 인증 레코드 등록에서 "Invalid index"오류), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/m-oka-system/items/f1d773f2a43a0c41c582
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
################################
# ACM
################################
resource "aws_acm_certificate" "public" {
domain_name = aws_route53_zone.public.name
subject_alternative_names = ["*.${aws_route53_zone.public.name}"]
validation_method = "DNS"
lifecycle {
create_before_destroy = true
}
tags = {
Name = aws_route53_zone.public.name
}
}
resource "aws_route53_record" "public_dns_verify" {
name = aws_acm_certificate.public.domain_validation_options[0].resource_record_name
type = aws_acm_certificate.public.domain_validation_options[0].resource_record_type
records = [aws_acm_certificate.public.domain_validation_options[0].resource_record_value]
zone_id = aws_route53_zone.public.id
ttl = 60
}
resource "aws_acm_certificate_validation" "public" {
certificate_arn = aws_acm_certificate.public.arn
validation_record_fqdns = [aws_route53_record.public_dns_verify.fqdn]
}
아래의 기사에 알기 쉽게 쓰고 있었습니다.
domain_validation_options
의 형태가 바뀐 것 같습니다.Terraform에서 AWS Certificate Manager 무료 인증서 발급
domain_validation_options 는 다음과 같은 형태로 반환됩니다. 확실히 본 느낌 list 타입입니다만, 3.0.0 이후에서는 set 타입으로 변경되고 있습니다.
해결 방법
앞의 기사를 참고로 domain_validation_options
의 개소를 for_each
에 재기입했습니다.for_each
의 사용법은 아직 잘 모르기 때문에, 이것으로 형 문제가 해소되고 있는 이유도 아직 배고프지 않았습니다만, 일단 움직이게 되었습니다. .
resource "aws_route53_record" "public_dns_verify" {
for_each = {
for dvo in aws_acm_certificate.public.domain_validation_options : dvo.domain_name => {
name = dvo.resource_record_name
record = dvo.resource_record_value
type = dvo.resource_record_type
}
}
allow_overwrite = true
name = each.value.name
records = [each.value.record]
ttl = 60
type = each.value.type
zone_id = aws_route53_zone.public.id
}
resource "aws_acm_certificate_validation" "public" {
certificate_arn = aws_acm_certificate.public.arn
validation_record_fqdns = [for record in aws_route53_record.public_dns_verify : record.fqdn]
}
다음 기사에 쓰여진 것처럼 tolist
에서 형식 변환하고 대처하는 방법도 있는 것 같습니다.
Terraform의 버전 업으로 Invalid index가 나왔을 때의 대처
name = tolist(aws_acm_certificate.public.domain_validation_options)[0].resource_record_name
type = tolist(aws_acm_certificate.public.domain_validation_options)[0].resource_record_type
records = [tolist(aws_acm_certificate.public.domain_validation_options)[0].resource_record_value]
참고 링크
Terraform에서 AWS Certificate Manager 무료 인증서 발급
Terraform의 버전 업으로 Invalid index가 나왔을 때의 대처
Resource: acm_certificate
Resource: acm_certificate_validation
Reference
이 문제에 관하여(Terraform에 의한 DNS 인증 레코드 등록에서 "Invalid index"오류), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/m-oka-system/items/f1d773f2a43a0c41c582
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
resource "aws_route53_record" "public_dns_verify" {
for_each = {
for dvo in aws_acm_certificate.public.domain_validation_options : dvo.domain_name => {
name = dvo.resource_record_name
record = dvo.resource_record_value
type = dvo.resource_record_type
}
}
allow_overwrite = true
name = each.value.name
records = [each.value.record]
ttl = 60
type = each.value.type
zone_id = aws_route53_zone.public.id
}
resource "aws_acm_certificate_validation" "public" {
certificate_arn = aws_acm_certificate.public.arn
validation_record_fqdns = [for record in aws_route53_record.public_dns_verify : record.fqdn]
}
name = tolist(aws_acm_certificate.public.domain_validation_options)[0].resource_record_name
type = tolist(aws_acm_certificate.public.domain_validation_options)[0].resource_record_type
records = [tolist(aws_acm_certificate.public.domain_validation_options)[0].resource_record_value]
Terraform에서 AWS Certificate Manager 무료 인증서 발급
Terraform의 버전 업으로 Invalid index가 나왔을 때의 대처
Resource: acm_certificate
Resource: acm_certificate_validation
Reference
이 문제에 관하여(Terraform에 의한 DNS 인증 레코드 등록에서 "Invalid index"오류), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/m-oka-system/items/f1d773f2a43a0c41c582텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)