Com o CloudFront VPC Origins é possível publicar uma aplicação Web em uma VPC privada, sem a necessidade de nenhuma rota direta para a internet e garantirmos que o CloudFront seja a única forma de acesso para sua apliçação e que todas as requisições passem por ele (CloudFront).
Criando um VPC Origin será possível usar o CloudFront para publicar aplicações que estão em sub-redes privadas evitando o uso de IP público ou a necessidade de colocar a sua aplicação em uma sub-rede pública.
O Cloud Front é uma CDN (Content Delivery Network) da AWS para entrega de conteúdo com alta velocidade e baixa latência, devido a sua quantidade de Pontos de Presença (PoPs) espalhados pelo mundo.
Mais detalhes sobre esse serviço aqui: https://aws.amazon.com/pt/cloudfront/
Usando o CloudFront ainda contamos com a proteção contra ataques de Denial of Service (DoS) que é disponibilizado por padrão no serviço.
Vamos analisar um pouco sobre a arquitetura do cenário proposto…
Qual foi a base dessa demonstração?
Foi criada uma instância EC2 com o Amazon Linux 2 em uma subnet privada sem nenhuma rota de acesso a internet, instalado o Apache e configurada uma página simples (Hello World) no caminho /var/www/html/index.html. Após a criação da instância, foi criado um Elastic Load Balancer do tipo ALB interno (Application Load Balancer). Utilizaremos esse ALB como a origem (apontamento) do VPC origin e assim teremos acesso público na aplicação através do CloudFront sem a instância ser exposta na internet.
Acessando a console do CloudFront pela primeira vez, será exibida uma janela similar a essa abaixo, clique no menu no canto superior esquerdo e depois em VPC origin.
![](https://brenocarvalho.cloud/wp-content/uploads/2024/12/VPC_Origins_1-1-1024x518.png)
Será exibida a janela abaixo com o botão Create VPC origin:
![](https://brenocarvalho.cloud/wp-content/uploads/2024/12/VPC_Origins_2-1024x193.png)
Após clicar no botão carregará a janela para criação do VPC origin, conforme a imagem a seguir. Nessa janela iremos preencher com as seguintes informações, no primeiro campo (Name) deverá ser preenchido o nome que identifique o recurso (VPC origin).
No segundo campo (Origin ARN) preencher com o ARN (Amazon Resource Name) de uma Instância EC2 ou de um Elastic Load Balancer.
Agora, será preciso selecionar o protoloco (Protocol), deixaremos a opção padrão Match viewer com o TLSv1.2 que já vem selecionada, com as configurações realizadas, clique no botão Create VPC origin.
![](https://brenocarvalho.cloud/wp-content/uploads/2024/12/VPC_Origins_3-1024x517.png)
Falando um pouco sobre o ARN (Amazon Resource Name), ele é basicamente um identificador único utilizado para nomear os recursos no ambiente da AWS.
Mais detalhes aqui:
https://docs.aws.amazon.com/pt_br/IAM/latest/UserGuide/reference-arns.html
Após clicar no botão Create VPC origin uma página similiar a janela abaixo será carregada:
![](https://brenocarvalho.cloud/wp-content/uploads/2024/12/VPC_Origins_4-1024x307.png)
Com o VPC origin criado, iremos criar a Distribution para que o CloudFront possa realizar a entrega de conteúdo com alta velocidade e baixa latência. Na console do CloudFront clique no botão Create a CloudFront distribution.
![](https://brenocarvalho.cloud/wp-content/uploads/2024/12/VPC_Origins_5-1024x388.png)
Abrirá uma janela para criação do Distribution, clique no campo Origin domain e selecione o VPC origin criado anteriormente.
![](https://brenocarvalho.cloud/wp-content/uploads/2024/12/VPC_Origins_6-1024x592.png)
Os campos VPC origin domain e Name serão preenchidos automaticamente conforme podemos ver na imagem abaixo:
![](https://brenocarvalho.cloud/wp-content/uploads/2024/12/VPC_Origins_7-1024x555.png)
Na sessão Default cache behavior é possível configurar o comportamento do cache, métodos HTTP permitidos e a política de protocolo, mas para essa demonstração deixaremos todas as opções como padrão e seguiremos para a próxima parte.
![](https://brenocarvalho.cloud/wp-content/uploads/2024/12/VPC_Origins_8-1024x563.png)
Em Function associations, podemos ignorar essa sessão, pois não estaremos trabalhando com CloudFront Functions ou Lambda@Edge nessa aplicação. A próxima sessão será a Web Application Firewall (WAF) onde iremos simplesmente, selecionar Do not enable security protections para não ativar o WAF. Pois não iremos focar no WAF nesse tutorial.
![](https://brenocarvalho.cloud/wp-content/uploads/2024/12/VPC_Origins_9-1024x563.png)
Caso tenha interesse em aprender como proteger uma Aplicação Web com o WAF na AWS. Confira no link abaixo:
https://brenocarvalho.cloud/2023/12/31/como-proteger-a-sua-aplicacao-web-na-aws-usando-waf-web-application-firewall/
Após selecionar a opção Do not enable security protections e desabilitar o WAF, clique no botão Create distribution e o Distribution será criado no CloudFront.
Acessando o Distribution criado na console do CloudFront, será possível ter acesso ao endereço do CloudFront para acessar a página de exemplo:
![](https://brenocarvalho.cloud/wp-content/uploads/2024/12/VPC_Origins_10-1024x430.png)
Ao entrar no endereço será possível visualizar o site abaixo:
![](https://brenocarvalho.cloud/wp-content/uploads/2024/12/VPC_Origins_11-1024x589.png)
Consideramos que o novo recurso do CloudFront facilitou a publicação de Aplicações Web com segurança. Esperamos que esse tutorial possa contribuir positivamente na comunidade da AWS.
Até breve!