S3 pour le web

Amazon S3 (Simple Storage Service) est bien plus qu’un simple stockage de fichiers. C’est une plateforme d’hébergement de sites statiques performante, économique et infiniment scalable.

Lueur Externe utilise S3 comme fondation pour l’hébergement de sites Astro, Next.js et autres frameworks SSG.

Hébergement de site statique

Configuration du bucket

# Créer le bucket
aws s3 mb s3://mon-site-web --region eu-west-3

# Activer l'hébergement statique
aws s3 website s3://mon-site-web \
  --index-document index.html \
  --error-document 404.html

Politique de bucket pour CloudFront

{
  "Version": "2012-10-17",
  "Statement": [{
    "Sid": "AllowCloudFrontOAC",
    "Effect": "Allow",
    "Principal": {
      "Service": "cloudfront.amazonaws.com"
    },
    "Action": "s3:GetObject",
    "Resource": "arn:aws:s3:::mon-site-web/*",
    "Condition": {
      "StringEquals": {
        "AWS:SourceArn": "arn:aws:cloudfront::123456789:distribution/EXAMPLE"
      }
    }
  }]
}

Déploiement avec sync

# Déployer le site avec synchronisation
aws s3 sync ./dist/ s3://mon-site-web \
  --delete \
  --cache-control "public, max-age=31536000, immutable" \
  --exclude "*.html"

# HTML avec cache court
aws s3 sync ./dist/ s3://mon-site-web \
  --cache-control "public, max-age=3600" \
  --include "*.html" \
  --exclude "*" \
  --include "*.html"

Sécurité

Bloquer l’accès public

aws s3api put-public-access-block \
  --bucket mon-site-web \
  --public-access-block-configuration \
  BlockPublicAcls=true,IgnorePublicAcls=true,BlockPublicPolicy=true,RestrictPublicBuckets=true

Chiffrement

# Activer le chiffrement par défaut
aws s3api put-bucket-encryption \
  --bucket mon-site-web \
  --server-side-encryption-configuration '{
    "Rules": [{"ApplyServerSideEncryptionByDefault": {"SSEAlgorithm": "AES256"}}]
  }'

Versioning

Le versioning protège contre les suppressions accidentelles :

aws s3api put-bucket-versioning \
  --bucket mon-site-web \
  --versioning-configuration Status=Enabled

Classes de stockage

ClasseUsageCoût/Go/mois
StandardAccès fréquent~0,023 $
Intelligent-TieringAccès variable~0,023 $
Standard-IAAccès rare~0,0125 $
GlacierArchivage~0,004 $

Pour un site web, Standard est le choix par défaut. Utilisez des lifecycle rules pour archiver les anciens logs.

CI/CD avec S3

# GitLab CI — Déploiement automatique
deploy:
  stage: deploy
  image: amazon/aws-cli
  script:
    - aws s3 sync ./dist/ s3://$BUCKET_NAME --delete
    - aws cloudfront create-invalidation --distribution-id $CF_ID --paths "/*"
  only:
    - main

Conclusion

S3 est la solution idéale pour héberger des sites statiques : performant, économique et sécurisé. Lueur Externe déploie et optimise des architectures S3 + CloudFront pour ses clients.