Distribuição de conteúdo com o Amazon CloudFront

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!

Documentação