ACM 证书跨账户 DNS 验证

ACM certificates cross account DNS validation

我有 2 个 AWS 账户:devprod

prod 帐户中,我设置了一个 DNS 域 (example.com),以及 2 个 public 托管区域:example.comprod.example.com . 2 ACM 证书也为这些域 internal.prod.example.comeks.prod.example.com 颁发。这些证书已由 DNS 正确验证。

dev 帐户中,我创建了 2 个 public 托管区域:dev.example.comexample.com。我为 internal.dev.example.comeks.dev.example.com 颁发了 2 个 ACM 证书,据我所知,这些证书需要使用 prod 帐户中的 DNS 进行验证。

这些证书处于待定状态。

我如何验证它们?

到目前为止我做了什么:

以下代码是如何在生产帐户上完成(和工作)的。

注意 - 这是我接手的代码,所以我不知道是否采取了任何手动步骤。

data "aws_route53_zone" "dns-zone" {
  name = "${var.environment}.${var.zone_name}"
}

resource "aws_acm_certificate" "cert" {
  domain_name       = "*.${var.environment}.${var.zone_name}"
  validation_method = "DNS"
  subject_alternative_names = list("*.internal.${var.environment}.${var.zone_name}", "*.eks.${var.environment}.${var.zone_name}")

  lifecycle {
    create_before_destroy = true
    prevent_destroy = true
  }
}

resource "aws_route53_record" "cert_validation" {
  for_each = {
    for dvo in aws_acm_certificate.cert.domain_validation_options : dvo.domain_name => {
      name    = dvo.resource_record_name
      record  = dvo.resource_record_value
      type    = dvo.resource_record_type
      zone_id = data.aws_route53_zone.dns-zone.zone_id
    }
  }

  allow_overwrite = true
  name            = each.value.name
  records         = [each.value.record]
  ttl             = 60
  type            = each.value.type
  zone_id         = each.value.zone_id
}


resource "aws_acm_certificate_validation" "cert" {
  certificate_arn         = aws_acm_certificate.cert.arn
  validation_record_fqdns = [for record in aws_route53_record.cert_validation : record.fqdn]
}

Ps - 如果您需要更多说明,请告诉我。

您有 example.com 的开发和生产帐户?只有1个可以正常使用。 registrar 用于 example.com 的地方...该 registrar 只能使用 name servers 来自其中 1 个托管区域。

您提到您有 2 个用于 internal.dev.example.com 和 eks.dev.example.com 的 ACM 证书...如果它们的域是在 DEV 帐户中创建的,则应在 DEV 帐户中对其进行验证.

此外,我建议您只在 ACM 中为 *.dev.example.com 创建 1 个通配符证书并在 DEV 帐户中验证该 1。任何子域,例如 eks.dev.example.com 都可以使用它。