Subdomínio de Route53 não resolvido com nslookup

2

Meu problema

Estou tentando criar um CDN pessoal para compartilhar arquivos estáticos com meus contatos. O design inclui um bucket S3, uma distribuição do CloudFront e um subdomínio registrado via Route53, todos configurados usando o Terraform.

No entanto, posso acessar meus arquivos via S3 e Cloudfront, mas não pelo meu subdomínio ( cdn.adamatan.com ).

O que está funcionando

S3

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

CloudFront

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

O que está quebrado

Não consigo obter os arquivos usando o subdomínio. Além disso, o nslookup para cdn.adamatan.com e adamatan.con não funciona. Eu acho que eu configurei o Route53 de alguma forma.

Configuração

Domínio

ZonaHospedada

ConfiguraçãodoTerraform

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}"
}

Minha pergunta

Como posso mapear meu subdomínio ( cdn.adamatan.com ) para minha distribuição cloudfront ( d36tl9ayobqfgg.cloudfront.net ) usando o Terraform (preferencialmente com suporte a SSL)?

    
por Adam Matan 22.10.2017 / 06:10

1 resposta

6

No Amazon Hosted Zone, você tem um conjunto diferente de servidores de nomes do que no seu registrador.

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

Nenhum dos servidores de nome acima responde a adamatan.com SOA & %código%. Esses servidores de nome não têm seu domínio configurado neles, enquanto o conjunto de servidores na sua zona possui:

;; 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.

Vá para o gerenciamento de domínio em sua conta Gandi e altere seus servidores de nomes de acordo. Os registros NS na região pai ( cdn.adamatan.com ) devem corresponder aos que você possui ( .com ).

Lembre-se de que adamatan.com nas duas zonas é TTL segundos, ou seja, 48 horas. Pode levar até dois dias para que essas alterações entrem em vigor. 172800 mostra se eles foram atualizados nos servidores de nomes raiz de dig adamatan.com NS @a.gtld-servers.net. e é quando a contagem realmente começa.

    
por 22.10.2017 / 07:46