【问题标题】:Validate certificate using new record使用新记录验证证书
【发布时间】:2020-10-05 12:12:51
【问题描述】:

我正在尝试使用here 概述的方法在 terraform 中验证 ACM 证书,基本上它是使用 Route53 记录的 DNS 验证。问题是,据我了解,它需要已经存在的 Route53 记录,因此它可以使用资源的 records 属性。但在我的情况下,这是一个正在创建的新记录,所以如果我同时尝试 aliasrecords 属性,例如

resource aws_route53_record wildcard {
  zone_id = var.environment.route53_zone.zone_id
  name    = "*.${local.cname}."
  type    = "A"
  alias {
    name                   = aws_cloudfront_distribution.main.domain_name
    zone_id                = aws_cloudfront_distribution.main.hosted_zone_id
    evaluate_target_health = false
  }
  records = [aws_acm_certificate.wildcard[0].domain_validation_options.0.resource_record_value]
}

我收到错误"alias" conflicts with "records"。是否可以在同一脚本中创建 Route53 记录并将其用于证书验证?

【问题讨论】:

    标签: amazon-web-services terraform amazon-route53 terraform-provider-aws aws-certificate-manager


    【解决方案1】:

    您需要使用 aws_acm_certificate_validation 资源,幸运的是,该页面有一个很好的示例说明如何执行此操作。

    resource "aws_acm_certificate" "cert" {
      domain_name       = "example.com"
      validation_method = "DNS"
    }
    
    data "aws_route53_zone" "zone" {
      name         = "example.com."
      private_zone = false
    }
    
    resource "aws_route53_record" "cert_validation" {
      name    = "${aws_acm_certificate.cert.domain_validation_options.0.resource_record_name}"
      type    = "${aws_acm_certificate.cert.domain_validation_options.0.resource_record_type}"
      zone_id = "${data.aws_route53_zone.zone.zone_id}"
      records = ["${aws_acm_certificate.cert.domain_validation_options.0.resource_record_value}"]
      ttl     = 60
    }
    
    resource "aws_acm_certificate_validation" "cert" {
      certificate_arn         = "${aws_acm_certificate.cert.arn}"
      validation_record_fqdns = ["${aws_route53_record.cert_validation.fqdn}"]
    }
    
    resource "aws_lb_listener" "front_end" {
      # [...]
      certificate_arn = "${aws_acm_certificate_validation.cert.certificate_arn}"
    }
    

    【讨论】:

    • 是的,我正在做类似的事情。我的问题是resource "aws_route53_record" 。此记录是为 CloudFront 分配创建的,因此它使用 alias 属性。与records 属性冲突
    【解决方案2】:

    我意识到用于证书验证的 Route53 记录与用于 CloudFront 分发的 Route53 记录无关。两者都必须创建,每个都有其不同的目的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-03-06
      • 1970-01-01
      • 2021-07-22
      • 2020-10-12
      • 2010-11-08
      • 2013-12-10
      • 2019-06-14
      相关资源
      最近更新 更多