It's a project designed to demonstrate enabling Brotli and GZIP compression on CloudFront using Terraform.
aws iam create-user --user-name superadmin
aws iam attach-user-policy --user-name superadmin --policy-arn arn:aws:iam::aws:policy/AdministratorAccess
aws iam create-access-key --user-name superadmin
aws configure
brew install tfenv
tfenv install 1.5.5
tfenv use 1.5.5
git clone https://github.com/danielmenezesbr/cloudfront-brotli-gzip
cd cloudfront-brotli-gzip
terraform init
terraform plan
terraform apply -auto-approve
cloudfront_url=$(terraform output cloudfront_url | tr -d '"')
curl -H "Accept-Encoding: br" -o output_file.br "https://${cloudfront_url}/index.html"
curl -H "Accept-Encoding: gzip" -o output_file.gzip "https://${cloudfront_url}/index.html"
curl -o output_file.plain "https://${cloudfront_url}/index.html"
file output_file.gzip output_file.br
output_file.br: data
output_file.gzip: gzip compressed data, from Unix, original size modulo 2^32 3115
brew install brotli
brotli -d -o output_file.br_uncompressed output_file.br
gzip -d -c output_file.gzip > output_file.gzip_uncompressed
sha256sum ./content/index.html output_file.br_uncompressed output_file.gzip_uncompressed output_file.plain
shasum -a 256 ./content/index.html output_file.br_uncompressed output_file.gzip_uncompressed output_file.plain
62d1e59d757bd6ad7a4d987351af7ea06cce1222b34a35d454e801511c1145fa ./content/index.html
62d1e59d757bd6ad7a4d987351af7ea06cce1222b34a35d454e801511c1145fa output_file.br_uncompressed
62d1e59d757bd6ad7a4d987351af7ea06cce1222b34a35d454e801511c1145fa output_file.gzip_uncompressed
62d1e59d757bd6ad7a4d987351af7ea06cce1222b34a35d454e801511c1145fa output_file.plain
TODO:
- show results in DevTools
- show how to invalidade cache
- explain why CloudFront didn't compress style.min.js (under 1000 bytes)