Назад | Перейти на главную страницу

Поддомен Route53 не разрешен с помощью nslookup

Моя проблема

Я пытаюсь создать личный CDN, чтобы поделиться статическим файлом со своими контактами. Дизайн включает корзину S3, дистрибутив CloudFront и поддомен, зарегистрированный через Route53, все настроено с помощью Terraform.

Однако я могу получить доступ к своим файлам через S3 и Cloudfront, но не через мой поддомен (cdn.adamatan.com).

Что работает

S3

curl http://cdn.adamatan.com.s3.amazonaws.com/index.html

CloudFront

curl https://d36tl9ayobqfgg.cloudfront.net/index.html

Что сломано

Я не могу получить файлы с помощью поддомена. Более того, nslookup для cdn.adamatan.com и adamatan.con не работать. Думаю, что как-то неправильно настроил Route53.

Конфигурация

Домен

Размещенная зона

Конфигурация Terraform

variable "hosted_zone" {
  default = "adamatan.com"
}

variable "domain" {
  default = "cdn.adamatan.com"
}

variable "aws_region" {
  default = "us-east-1"
}

provider "aws" {
  region  = "${var.aws_region}"
  profile = "personal"
  version = "~> 1.1"
}

/*
   The S3 bucket storing the files. It must bear the same name as the domain
   pointing to it. See https://gist.github.com/danihodovic/a51eb0d9d4b29649c2d094f4251827dd,
   and http://stackoverflow.com/a/5048129/2966951
*/
resource "aws_s3_bucket" "adamatan_cdn_bucket" {
  bucket = "${var.domain}"
  acl = "public-read"

  policy = <<EOF
{
      "Version":"2008-10-17",
      "Statement":[{
        "Sid":"AllowPublicRead",
        "Effect":"Allow",
        "Principal": {"AWS": "*"},
        "Action":["s3:GetObject"],
        "Resource":["arn:aws:s3:::${var.domain}/*"]
      }]
    }
  EOF

  tags {
    Description = "Origin bucket for my personal CDN"
  }
}

resource "aws_route53_zone" "cdn_zone" {
  name = "${var.hosted_zone}"
}

resource "aws_route53_record" "root_domain" {
  zone_id = "${aws_route53_zone.cdn_zone.zone_id}"
  name = "${var.domain}"
  type = "A"

  alias {
    name = "${aws_cloudfront_distribution.adamatan_cdn_distribution.domain_name}"
    zone_id = "${aws_cloudfront_distribution.adamatan_cdn_distribution.hosted_zone_id}"
    evaluate_target_health = false
  }
}

resource "aws_cloudfront_distribution" "adamatan_cdn_distribution" {
  origin {
    domain_name = "${var.domain}.s3.amazonaws.com"
    origin_id   = "${var.domain}"
  }

  enabled             = true
  is_ipv6_enabled     = true
  comment             = "Permanent public file distribution"
  default_root_object = "index.html"

  aliases = ["${var.domain}"]

  default_cache_behavior {
    allowed_methods  = ["GET", "HEAD", "OPTIONS"]
    cached_methods   = ["GET", "HEAD"]
    target_origin_id = "${var.domain}"

    forwarded_values {
      query_string = false

      cookies {
        forward = "none"
      }
    }

    viewer_protocol_policy = "allow-all"
    min_ttl                = 60
    default_ttl            = 300
    max_ttl                = 86400
  }

  price_class = "PriceClass_All"

  restrictions {
    geo_restriction {
      restriction_type = "none"
    }
  }

  viewer_certificate {
    cloudfront_default_certificate = true
  }
}


output "domain" {
  value = "${var.domain}"
}

output "cdn_domain" {
  value = "${aws_cloudfront_distribution.adamatan_cdn_distribution.domain_name}"
}

Мой вопрос

Как я могу сопоставить свой субдомен (cdn.adamatan.com) в мой облачный дистрибутив (d36tl9ayobqfgg.cloudfront.net) с помощью Terraform (желательно с поддержкой SSL)?

В Amazon Hosted Zone у вас другой набор серверов имен, чем у вашего регистратора.

Domain Name: ADAMATAN.COM
Registrar: Gandi SAS
Name Server: NS-1193.AWSDNS-21.ORG
Name Server: NS-1889.AWSDNS-44.CO.UK
Name Server: NS-4.AWSDNS-00.COM
Name Server: NS-1193.AWSDNS-21.ORG

Ни один из указанных выше серверов имен не отвечает на adamatan.com SOA & cdn.adamatan.com. На этих серверах имен не настроен ваш домен, в то время как набор серверов в вашей зоне имеет:

;; ANSWER SECTION:
cdn.adamatan.com.       60      IN      A       13.33.23.245
cdn.adamatan.com.       60      IN      A       13.33.23.59
cdn.adamatan.com.       60      IN      A       13.33.23.22
cdn.adamatan.com.       60      IN      A       13.33.23.89
cdn.adamatan.com.       60      IN      A       13.33.23.45
cdn.adamatan.com.       60      IN      A       13.33.23.248
cdn.adamatan.com.       60      IN      A       13.33.23.169
cdn.adamatan.com.       60      IN      A       13.33.23.94

;; AUTHORITY SECTION:
adamatan.com.           172800  IN      NS      ns-1511.awsdns-60.org.
adamatan.com.           172800  IN      NS      ns-1730.awsdns-24.co.uk.
adamatan.com.           172800  IN      NS      ns-378.awsdns-47.com.
adamatan.com.           172800  IN      NS      ns-936.awsdns-53.net.

Перейдите к управлению доменом в своей учетной записи Gandi и соответствующим образом измените серверы имен. Записи NS в родительском (.com) зона должна совпадать с вашими (adamatan.com).

Имейте в виду, что TTL в обеих зонах 172800 секунд, т.е. 48 часов. Изменения вступят в силу в течение двух дней. dig adamatan.com NS @a.gtld-servers.net. показывает, были ли они обновлены на корневых серверах имен .com, и именно тогда начинается счет.