AWS Route53 – Configurando um domínio para uma aplicação que utiliza CloudFront

Este post é na verdade um tutorial de como configurar um domínio e fazê-lo
apontar para um endereço do CloudFront.

Durante o desenvolvimento de um projeto aqui na redspark, me deparei com esta tarefa.
Já havia configurado o Route53 para alguns projetos pessoais, mas nenhum deles
utilizando tecnologias como ELB (Elastic Load Balancer) ou CloudFront.

Não estava muito fácil de achar essa informação na internet. Primeiramente acabei caindo
na documentação da AWS, que preenchiam toda a primeira página de resultados do Google.
Depois disso comecei a encontrar algumas informações picadas em alguns blogs.
Precisei fazer uma colagem de informações de diferentes posts para chegar na solução final.
O mais interessante é que é muito simples de configurar, e são poucos os passos:

1. Acessando o Route53

Se você não possui nenhum DNS configurado no Route53, você verá esta tela:

1

E deverá clicar nesta opção:

2

Após os passos acima, ou caso já tenha um DNS configurado, verá esta tela:

3

Clique no botão Create Hosted Zone.

2. Criando uma Hosted Zone

Uma hosted zone é o equivalente ao um namespace para o seu domínio.
Preencha o nome do domínio. O comentário é opcional.
Deixe o tipo como Public Hosted Zone, que é a configuração padrão para roteamento de tráfico vindo da internet.
Caso queira configurar a hosted zone para trabalhar dentro de uma Amazon VPC, selecione a segunda opção.

4

Clique em Create.

3. Name Server

Assim que a Hosted Zone for criada, já existirão 2 entradas dentro da zone:

  • NS (Name Server)
  • SOA (Start of Authority)

5

O importante aqui é o Name Server. Os valores gerados pela AWS são os valores que deverão ser inseridos no
sistema onde você adquiriu o domínio. Por exemplo, no godaddy:

6

4. Configurando o Alias

Existem duas formas de configurar um DNS: CNAME ou ALIAS.
Usaremos o ALIAS pois facilita a configuração para o CloudFront, além de custar menos,
conforme explica a documentação da AWS:

CNAME Records:
Amazon Route 53 charges for CNAME queries.

Alias Records:
Amazon Route 53 doesn’t charge for alias queries to CloudFront distributions, Elastic Beanstalk environments,
ELB load balancers, or Amazon S3 buckets. For more information, see Amazon Route 53 Pricing.

Existem outras diferenças entre CNAME e Alias, que podem ser conferidas aqui: Choosing Between Alias and Non-Alias Resource Record Sets

Clique em Create Record Set:

7

O name pode ser deixado em branco, ou pode ser adicionado um sub-domínio, como www, admin, etc.
O Type deve ser A – IPv4 address.
Selecione o radio button Alias: Yes.
Clique no campo Alias Target. Você verá que não possui nenhum opção dentro dos diversos grupos que a AWS informa:

8

Para conseguir linkar este Record Set no CloudFront, precisamos realizar uma configuração nele primeiro.
Acesse o painel do CloudFront.

5. Configurando o CloudFront

Acesse sua distribuição no CloudFront e clique no botão Edit na aba General:

9

No campo Alternate Domain Names (CNAMEs), preencha o domínio adquirido. No caso
do nosso exemplo, meudominio.com.br, e salve.

10

Se quiser configurar sub-domínios, deverá adicionar os mesmos neste campo.
Cada entrada no campo deve ser em uma linha diferente.
Você pode usar wildcard também, desta forma: *.meudominio.com.br

6. Voltando pra o Route53

Agora que configuramos o CloudFront, vamos retomar a criação do Record Set.
Dessa vez, no campo Alias Target, você verá que vai existir um item dentro do grupo CloudFront:

11

Basta selecionar e salvar, e o Route53 está configurado apontando para o seu CloudFront.

O processo também é o mesmo para aplicações que utilizam outros serviços da AWS, como o ELB.

Se quiser configurar mais de um domínio apontando para o mesmo CloudFront, basta adicionar mais um Alias e seguir os mesmos passos descritos acima.

One Comment

  1. Bruno Oliveira de Alcântara

    Muito bom o seu artigo Bruno. Me salvou o/

    Abração.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>