As Redes de Distribuição de Conteúdo (Content delivery network - CDN) são compostas por servidores espalhados geograficamente que geralmente armazenam conteúdo da web em cache e distribuem esse conteúdo para os usuários. As CDNs permitem que o usuário acesse o conteúdo a partir do servidor mais próximo a ele, tornando a experiência mais aprazível, por assim dizer - já que haverá baixa latência e maior velocidade de carregamento dos dados.
A AWS também possui um serviço de CDN, chamado de Amazon CloudFront, utilizado inclusive pela Netflix. Esse serviço permite distribuir conteúdos estáticos e dinâmicos na web (websites, imagens, vídeos, dados, entre outros). Para isso, o CloudFront faz uso das Edge Locations (Pontos de Presença), que atuam como servidores de cache espalhados pelo mundo, acelerando a entrega dos conteúdos e melhorando a experiência dos usuários.
No CloudFront, a entrega do conteúdo se baseia na localização geográfica do usuário, na origem da página e também na localização do servidor de entrega do conteúdo.
Além disso, o CloudFront:
- Trabalha em conjunto com outros serviços - S3, WAF, Shield, Route 53 e Certificate Manager;
- Emite um certificado SSL/TLS público;
- Mantém o acesso seguro e criptografado;
- Redireciona o tráfego HTTP para HTTPS;
- Pode restringir o acesso do conteúdo por meio de vários recursos;
- Entre outras funções.
Sem mais delongas, vamos para o hands-on! Ah, esse tutorial é uma continuação do post "Subindo um website estático no Amazon S3" - caso você não tenha um bucket S3 configurado para servir um site estático, dá uma olhadinha no post.
Passo a Passo
1) Criando a distribuição do CloudFront
- Acesse a console AWS e busque pelo CloudFront. Clique em Criar distribuição (Create distribution)

- Em Origin domain, você vai escolher o Bucket S3 em que os arquivos do Website - o CloudFront vai sugerir que você indique o endpoint do website, mas para este tutorial queremos que somente o CloudFront tenha acesso ao bucket (e, por consequência, iremos alterar a política de acesso do S3).
- Em Origin acess, marque a opção Origin access control settings, e depois clique no botão Criar nova OAC

- Um pop-up vai abrir para configurarmos esse controle de acesso, apenas clique em Criar (create)

Inclusive, vai aparecer um aviso dizendo que temos que atualizar a políca do Bucket... O que faremos depois.

- Agora, desça a página até a opção Web Application Firewall (WAF). Deixe o WAF desabilitado.

- Mais abaixo, em Configurações (Settings), especifique a página
index.html
como objeto raiz para que o CloudFront saiba qual objeto do S3 ele deve responder

- Desça até ao final da página e clique em "Criar distribuição"
2) Modificando a política do bucket S3
Após criar a distribuição, uma mensagem irá aparecer na tela, indicando que você deve copiar e alterar a política (policy) do Bucket. Copie a política:

Acesse o bucket do seu site, vá em Permissões -> Política do Bucket -> e clique em Editar
Remova a política que estava anteriormente - na qual configuramos no tutorial de Website estático no S3 - e cole a nova política de acesso. Clique em Salvar alterações

Volte lá no CloudFront, clique na distribuição e copie o nome de domínio (domain name). Cole no navegador e dê enter:

Agora, o site está acessível pelo domínio do CloudFront. Se você tentar acessá-lo com a URL gerada pelo S3, não vai conseguir:

3) Limpando o ambiente
Para limpar o seu ambiente, você precisa:
- Desabilitar a Distribuição no CloudFront - desabilite e aguarde alguns minutos. Somente depois que a opção Deletar estará disponível para ele ser excluído

- Você também pode excluir os arquivos e o bucket S3, caso queira. Mas é opcional.
Bons estudos!