CloudFront & Global Accelerator Revisão SAA-C03 · Domínio 3.4 (Redes de alto desempenho) & Edge Networking
1. Amazon CloudFront — Visão Geral
- Content Delivery Network (CDN).
- Melhora a performance de leitura, pois o conteúdo é cacheado na borda (edge).
- Melhora a experiência dos usuários.
- Centenas de Points of Presence globalmente (edge locations, caches).
- Proteção contra DDoS (por ser distribuído mundialmente), com integração ao AWS Shield e ao AWS Web Application Firewall (WAF).
📌 Ideia central
CloudFront aproxima o conteúdo do usuário final, reduzindo latência e distribuindo a carga de requisições, ao invés do usuário sempre buscar o conteúdo direto na origem (que pode estar longe geograficamente).
2. CloudFront — Origins
S3 bucket
- Para distribuir arquivos e cacheá-los na borda.
- Para fazer upload de arquivos para o S3 através do CloudFront.
- Protegido usando Origin Access Control (OAC).
VPC Origin
- Para aplicações hospedadas em subnets privadas de uma VPC.
- Suporta Application Load Balancer (privado) / Network Load Balancer (privado) / instâncias EC2.
Custom Origin (HTTP)
- Site estático em S3 (é necessário primeiro habilitar o bucket como um site estático S3).
- Qualquer backend HTTP público que você quiser (exemplo: um ALB público).
3. CloudFront at a High Level (fluxo)
🔄 Fluxo de uma requisição
Client
|
|-- GET /beach.jpg?size=300x300 HTTP/1.1
| User-Agent: Mozilla/4.0 (compatible; MSIE5.01; Windows NT)
| Host: www.example.com
| Accept-Encoding: gzip, deflate
v
CloudFront Edge Location
|
|-- verifica Local Cache (CACHE)
| se HIT --> retorna direto ao Client
| se MISS --> "Forward Request to your Origin"
v
Origin (S3 ou HTTP)
Ou seja: o cliente sempre fala com a Edge Location mais próxima; se o conteúdo já estiver em cache lá, a resposta é imediata. Se não estiver, o CloudFront busca na origem (S3 ou HTTP) e a partir daí passa a servir do cache.
4. CloudFront — S3 as an Origin
🔄 Arquitetura global
Usuários públicos (www) na América --> Edge Los Angeles \
Usuários públicos (www) no Brasil --> Edge São Paulo |--[Private AWS network]--> Origin (S3 bucket)
Usuários na Índia --> Edge Mumbai | protegido por: OAC + S3 bucket policy
Usuários na Austrália --> Edge Melbourne /
- As edge locations se comunicam com o bucket S3 (origin) através da rede privada da AWS (Private AWS), não pela internet pública.
- A segurança é garantida por Origin Access Control (OAC) + S3 bucket policy, garantindo que apenas o CloudFront (e não o público direto) acesse o bucket.
5. CloudFront vs. S3 Cross Region Replication (CRR)
| CloudFront | S3 Cross Region Replication |
|---|---|
|
|
6. CloudFront — ALB ou EC2 como Origin usando VPC Origins
- Permite entregar conteúdo a partir de aplicações hospedadas em subnets privadas da sua VPC (sem precisar expô-las na Internet).
- Entrega tráfego para recursos privados:
- Application Load Balancer
- Network Load Balancer
- Instâncias EC2
🔄 Fluxo
Users --> CloudFront (Edge Location) --> VPC Origin --> VPC
|
Private Subnet:
- Application Load Balancer
- Network Load Balancer
- EC2 Instance
7. CloudFront — ALB ou EC2 como Origin usando Public Network
🔄 Cenário 1 — EC2 direto (sem Load Balancer)
Users --> Edge Location --[Allow Public IP of Edge Locations]--> EC2 Instances
(lista em: http://d7uri8nf7uskq.cloudfront.net/tools/list-cloudfront-ips)
EC2 Instances (Security Group) MUST BE PUBLIC
🔄 Cenário 2 — Com Application Load Balancer
Users --> Edge Location (Public IPs) --[Allow Public IP of Edge Locations]--> Application Load Balancer
(Security Group) MUST BE PUBLIC
Application Load Balancer --[Allow Security Group of Load Balancer]--> EC2 Instances
(Security Group) CAN BE PRIVATE
📌 Diferença-chave
Com VPC Origins (seção 6), o ALB/EC2 pode continuar totalmente privado. Com Public Network (esta seção), o ALB (ou EC2) precisa ser público, liberando o acesso apenas para os IPs públicos das Edge Locations do CloudFront.
8. CloudFront Geo Restriction
- Você pode restringir quem pode acessar sua distribution.
- Allowlist: permite que seus usuários acessem seu conteúdo somente se estiverem em uma lista de países aprovados.
- Blocklist: impede que seus usuários acessem seu conteúdo se estiverem em uma lista de países banidos.
- O "país" é determinado usando um banco de dados Geo-IP de terceiros.
- Caso de uso: leis de direitos autorais (Copyright Laws) para controlar acesso ao conteúdo.
9. CloudFront — Cache Invalidations
- Caso você atualize a origem no back-end, o CloudFront não sabe disso e só vai buscar o conteúdo atualizado depois que o TTL expirar.
- No entanto, você pode forçar um refresh total ou parcial do cache (contornando o TTL), realizando uma CloudFront Invalidation.
- Você pode invalidar todos os arquivos (*) ou um caminho específico (ex: /images/*).
🔄 Fluxo
Usuário atualiza arquivos --> S3 Bucket (origin)
Depois, admin dispara: Invalidate -index.html -/images/*
|
v
CloudFront
/ \
Edge Location Edge Location
(Cache: index.html, /images/*) (Cache: index.html, /images/*)
[invalidados] [invalidados]
Usuário --[GET /index.html]--> CloudFront --> busca versão atualizada na origem
10. Problema: Usuários Globais para nossa Aplicação
- Você implantou uma aplicação e tem usuários globais que querem acessá-la diretamente.
- Eles passam pela internet pública, o que pode adicionar muita latência devido a vários "hops" (saltos entre roteadores/redes).
- Desejamos ir o mais rápido possível através da rede da AWS, para minimizar a latência.
🔄 Ilustração do problema
América --[muitos hops via internet pública]--\
Europa --[muitos hops via internet pública]-- >--> Public ALB (Índia)
Austrália --[muitos hops via internet pública]--/
Este é o problema que motiva o uso do AWS Global Accelerator, apresentado a seguir.
11. Unicast IP vs. Anycast IP
Unicast IP
Um servidor possui um endereço IP.
Client --> Servidor A (12.34.56.78)
Client --> Servidor B (98.76.54.32)
(IPs diferentes para servidores diferentes)
Anycast IP
Todos os servidores compartilham o mesmo endereço IP, e o cliente é roteado para o mais próximo.
Client --> Servidor A (12.34.56.78)
Client --> Servidor B (12.34.56.78)
(mesmo IP; o roteamento decide qual servidor físico responde)
📌 Por que isso importa
O conceito de Anycast IP é a base de funcionamento do AWS Global Accelerator — ele usa exatamente esse princípio para rotear o tráfego ao ponto de presença mais próximo, sem que o IP do cliente mude.
12. AWS Global Accelerator
- Aproveita a rede interna da AWS para rotear o tráfego até sua aplicação.
- 2 IPs Anycast são criados para a sua aplicação.
- O IP Anycast envia o tráfego diretamente para as Edge Locations.
- As Edge Locations enviam o tráfego para a sua aplicação.
🔄 Fluxo
América --> Edge Location \
Europa --> Edge location |--[Private AWS network]--> Public ALB (Índia)
Austrália --> Edge location /
Funciona com:
Elastic IP, instâncias EC2, ALB, NLB, públicos ou privados.
Performance consistente
- Roteamento inteligente para a menor latência e failover regional rápido.
- Sem problema com cache do cliente (porque o IP não muda).
- Usa a rede interna da AWS.
Health Checks
- O Global Accelerator realiza health checks das suas aplicações.
- Ajuda a tornar sua aplicação global (failover em menos de 1 minuto para instâncias não saudáveis).
- Ótimo para disaster recovery (graças aos health checks).
Segurança
- Apenas 2 IPs externos precisam ser colocados em whitelist.
- Proteção contra DDoS graças ao AWS Shield.
13. AWS Global Accelerator vs. CloudFront
- Ambos usam a rede global da AWS e suas edge locations ao redor do mundo.
- Ambos os serviços se integram ao AWS Shield para proteção contra DDoS.
| CloudFront | Global Accelerator |
|---|---|
|
|