Skip to content

Idempotent Bash scripts to automate the provisioning and cleanup of an AWS CloudFront CDN with an S3 origin.

Notifications You must be signed in to change notification settings

DessimA/Lab-Cloudfront

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 

Repository files navigation

AWS CloudFront & S3 Automation Lab

Este projeto contém um script de automação em Bash para provisionar uma infraestrutura de entrega de conteúdo (CDN) utilizando Amazon CloudFront e Amazon S3.

Autor: José Anderson da Silva Costa | Github: DessimA

Referência Heberton Geovane | Guia: Notion


🚀 Funcionalidades

O script setup_lab.sh realiza as seguintes operações de forma automatizada e idempotente:

  1. S3 Bucket Provisioning: Cria um bucket único (baseado no Account ID) e configura permissões públicas (ACLs).
  2. Asset Management: Verifica/Baixa uma imagem de teste e realiza o upload para o S3.
  3. CloudFront Distribution:
    • Verifica se já existe uma distribuição apontando para o bucket.
    • Cria uma nova distribuição caso não exista.
    • Reutiliza a existente para evitar duplicidade e custos.
  4. Cache Invalidation: Força a limpeza do cache nas Edge Locations para garantir que a imagem mais recente seja servida.
  5. Client Generation: Gera um arquivo index.html local configurado dinamicamente com a URL da CDN.

🛠️ Destaques Técnicos

Compatibilidade com Git Bash (Windows)

O script trata especificidades do ambiente Windows/MinGW:

  • Path Conversion Fix: Utiliza a flag MSYS_NO_PATHCONV=1 no comando de invalidação. Isso impede que o Git Bash converta caminhos absolutos do Linux (ex: /image.png) para caminhos do Windows (ex: C:/Program Files/...), o que causaria erro na API da AWS.

Idempotência e Tratamento de Erros

  • O script verifica a existência de recursos (Buckets, Distribuições) antes de tentar criá-los.
  • Utiliza queries JMESPath otimizadas ([Id, DomainName]) para garantir a extração correta de variáveis, independente da formatação de saída da AWS CLI.

📋 Pré-requisitos

  • AWS CLI v2 instalado e configurado (aws configure).
  • Ambiente Bash (Linux, macOS ou Git Bash no Windows).
  • Permissões de usuário AWS para S3 e CloudFront.

▶️ Como Executar

  1. Clone este repositório ou baixe o script.
  2. Dê permissão de execução:
    chmod +x setup_lab.sh
  3. Execute o script:
    ./setup_lab.sh
  4. Ao final, abra o arquivo gerado index.html no seu navegador para validar a entrega via CDN.

🧹 Limpeza (Cleanup)

Para remover os recursos criados e evitar custos:

  1. Exclua o bucket S3 e seus objetos.
  2. Desabilite a distribuição CloudFront.
  3. Exclua a distribuição após o status mudar para "Disabled".

Desenvolvido como parte de estudos práticos em Engenharia de Nuvem AWS.

About

Idempotent Bash scripts to automate the provisioning and cleanup of an AWS CloudFront CDN with an S3 origin.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages