ฉันติดอยู่กับข้อผิดพลาด Terraform ตลอดทั้งวันในขณะที่พยายามสร้างทรัพยากร AWS Route53 และทรัพยากร AWS Certificate Manager 2 บิตนี้เป็นส่วนหนึ่งของโครงการที่กว้างขึ้น (เว็บไซต์ที่โฮสต์ใน s3 ผ่านคุณสมบัติการให้บริการแบบคงที่)
โดยเฉพาะข้อผิดพลาดปรากฏขึ้นในระหว่างการตรวจสอบ DNS ของใบรับรอง เมื่อมีการแทรกบันทึก CNAMEs เป็นบันทึก DNS ใน Route53
ฉันจะจัดวางข้อผิดพลาดแล้วจึงอธิบายการตั้งค่า
ข้อผิดพลาด
terraform plan -var-file=production.vars
Creating...
module.infrastructure.aws_route53_record.idarth-validation-record: Still creating... [10s elapsed]
module.infrastructure.aws_route53_record.idarth-validation-record: Still creating... [20s elapsed]
module.infrastructure.aws_route53_record.idarth-validation-record: Still creating... [30s elapsed]
module.infrastructure.aws_route53_record.idarth-validation-record: Still creating... [40s elapsed]
module.infrastructure.aws_route53_record.idarth-validation-record: Still creating... [50s elapsed]
module.infrastructure.aws_route53_record.idarth-validation-record: Still creating... [1m0s elapsed]
module.infrastructure.aws_route53_record.idarth-validation-record: Still creating... [1m10s elapsed]
module.infrastructure.aws_route53_record.idarth-validation-record: Creation complete after 1m12s [id=ZB4TSGZTTZ3CQ__7bc5230529c8192e8e697aeab0ec0eb9.idarth.com._CNAME]
module.infrastructure.aws_acm_certificate_validation.idarth-ssl-certificate: Creating...
2019/08/24 18:32:40 [ERROR] module.infrastructure: eval: *terraform.EvalSequence, err: 1 error occurred:
* missing www.idarth.com DNS validation record: _18ff46dac48c6d852b696306dfa57093.www.idarth.com
2019/08/24 18:32:40 [TRACE] [walkApply] Exiting eval tree: module.infrastructure.aws_acm_certificate_validation.idarth-ssl-certificate
Error: 1 error occurred:
* missing www.idarth.com DNS validation record: _18ff46dac48c6d852b696306dfa57093.www.idarth.com
on ../modules/route53.tf line 14, in resource "aws_acm_certificate_validation" "idarth-ssl-certificate":
14: resource "aws_acm_certificate_validation" "idarth-ssl-certificate" {
หมายเหตุ: ฉันไม่ได้รวมแผนการดำเนินการที่สร้างบิตอื่นๆ ของโครงสร้างพื้นฐาน แต่ฉันรายงานเฉพาะบิตที่มีปัญหาเท่านั้น
นี่คือไฟล์ tf ของฉัน:
เส้นทาง 53.tf
resource "aws_route53_zone" "idarth-hosted-zone" {
name = "${var.domain_name}"
}
resource "aws_route53_record" "idarth-validation-record" {
name = "${aws_acm_certificate.idarth-ssl-certificate.domain_validation_options.0.resource_record_name}"
type = "${aws_acm_certificate.idarth-ssl-certificate.domain_validation_options.0.resource_record_type}"
zone_id = "${aws_route53_zone.idarth-hosted-zone.zone_id}"
records = ["${aws_acm_certificate.idarth-ssl-certificate.domain_validation_options.0.resource_record_value}"]
ttl = "60"
}
resource "aws_acm_certificate_validation" "idarth-ssl-certificate" {
provider = "aws.us_east_1"
certificate_arn = "${aws_acm_certificate.idarth-ssl-certificate.arn}"
validation_record_fqdns = [
"${aws_route53_record.idarth-validation-record.fqdn}"
]
}
resource "aws_route53_record" "idarth-record-domain" {
zone_id = "${aws_route53_zone.idarth-hosted-zone.zone_id}"
name = "${var.domain_name}"
type = "A"
alias {
name = "${aws_cloudfront_distribution.idarth-cloudfront-distr.domain_name}"
zone_id = "${aws_cloudfront_distribution.idarth-cloudfront-distr.hosted_zone_id}"
evaluate_target_health = false
}
}
resource "aws_route53_record" "idarth-record-domain-www" {
zone_id = "${aws_route53_zone.idarth-hosted-zone.zone_id}"
name = "${var.domain_name_www}"
type = "A"
alias {
name = "${aws_cloudfront_distribution.idarth-cloudfront-distr.domain_name}"
zone_id = "${aws_cloudfront_distribution.idarth-cloudfront-distr.hosted_zone_id}"
evaluate_target_health = false
}
}
ssl_certificate.tf
provider "aws" {
alias = "us_east_1"
region = "us-east-1"
}
resource "aws_acm_certificate" "idarth-ssl-certificate" {
provider = "aws.us_east_1"
domain_name = "${var.domain_name}"
subject_alternative_names = ["${var.domain_name_www}"]
validation_method = "DNS"
lifecycle {
create_before_destroy = true
}
tags = {
Project = "${var.name}-${var.env}"
Scope = "personal-blog"
}
}
การแจกจ่าย.tf
resource "aws_cloudfront_distribution" "idarth-cloudfront-distr" {
depends_on = ["aws_acm_certificate_validation.idarth-ssl-certificate"]
origin {
domain_name = "${aws_s3_bucket.idarth-static-site-host.bucket_regional_domain_name}"
origin_id = "${var.domain_name}"
/*s3_origin_config {
origin_access_identity = "origin-access-identity/cloudfront/ABCDEFG1234567"
}*/
}
enabled = true
is_ipv6_enabled = true
default_root_object = "index.html"
/*logging_config {
include_cookies = false
bucket = "mylogs.s3.amazonaws.com"
prefix = "myprefix"
}*/
aliases = ["${var.domain_name}", "${var.domain_name_www}"]
default_cache_behavior {
allowed_methods = ["GET", "HEAD"]
cached_methods = ["GET", "HEAD"]
target_origin_id = "${var.domain_name}"
forwarded_values {
query_string = false
cookies {
forward = "none"
}
}
compress = true
viewer_protocol_policy = "redirect-to-https"
min_ttl = 0
default_ttl = 3600
max_ttl = 86400
}
#price_class = "PriceClass_200"
restrictions {
geo_restriction {
restriction_type = "none"
locations = []
}
}
viewer_certificate {
acm_certificate_arn = "${aws_acm_certificate_validation.idarth-ssl-certificate.certificate_arn}"
ssl_support_method = "sni-only"
}
tags = {
Project = "${var.name}-${var.env}"
Scope = "personal-blog"
}
}
เวอร์ชัน Terraform: 0.12.7, เวอร์ชันผู้ให้บริการ aws: v2.25.0_x4
การวิเคราะห์บันทึกข้อผิดพลาด
ขณะที่ฉันใช้เวลาหนึ่งวันในการพยายามแก้ไขข้อผิดพลาดข้างต้น ต่อไปนี้เป็นความคิดของฉัน:
- ใบรับรองกำลังสร้าง 2 CNAME สำหรับ 2 โดเมน (ตัวแปร: var.domain_name, var.domain_name_www): _7bc5230529c8192e8e697aeab0ec0eb9.idarth.com._CNAME, _18ff46dac48c6d852b696306dfa57093.www.idarth คอม
- การสร้างอันแรกดังที่คุณเห็นในบันทึกของแผนการดำเนินการนั้นถูกสร้างขึ้นสำเร็จแล้ว ในขณะที่อันที่สองก่อให้เกิดปัญหา
- เมื่อดูในคอนโซล AWS ฉันเห็น CNAME แรกแทรกอยู่ในโซนที่โฮสต์ DNS แต่ไม่ใช่ครั้งที่สอง แม้ว่าจะแทรกโซนที่โฮสต์ DNS ใบรับรองสำหรับระเบียนนั้นยังคงส่งผลให้มีการตรวจสอบที่รอดำเนินการ
นี่คือสิ่งที่ฉันพบจนถึงตอนนี้ แต่ฉันไม่รู้ว่าจะก้าวไปข้างหน้าอย่างไร ใครเคยมาที่นี่แล้วช่วยหน่อยได้มั้ยคะ
ขอบคุณ!