使用新记录验证证书
Posted
技术标签:
【中文标题】使用新记录验证证书【英文标题】:Validate certificate using new record 【发布时间】:2020-10-05 12:12:51 【问题描述】:我正在尝试使用here 概述的方法在 terraform 中验证 ACM 证书,基本上它是使用 Route53 记录的 DNS 验证。问题是,据我了解,它需要已经存在的 Route53 记录,因此它可以使用资源的 records
属性。但在我的情况下,这是一个正在创建的新记录,所以如果我同时尝试 alias
和 records
属性,例如
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 记录并将其用于证书验证?
【问题讨论】:
【参考方案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 记录无关。两者都必须创建,每个都有其不同的目的。
【讨论】:
以上是关于使用新记录验证证书的主要内容,如果未能解决你的问题,请参考以下文章