RousselTMLEARNING

TP · AWS : de la découverte à l'expertise

TP : Stockage S3 avec LocalStack avec correction

La correction est intégrée au TP (Voir les encadrés de couleur vert)

Ce que vous allez apprendre dans ce TP
  • Utiliser LocalStack et awslocal
  • Sécuriser un bucket (versionnage, chiffrement, politique)
  • Automatiser le cycle de vie des objets

Introduction #

Ce que vous allez apprendre dans cette section
  • Utiliser LocalStack et awslocal
  • Sécuriser un bucket (versionnage, chiffrement, politique)
  • Automatiser le cycle de vie des objets

Contexte. Votre équipe veut stocker ses exports et publier une documentation statique. Avant de toucher au vrai compte, vous validez la configuration sur LocalStack.

Prérequis : Docker, le CLI AWS et LocalStack (pip install localstack awscli-local terraform-local) : tout s'exécute en local, sans compte AWS ni frais  ·  Durée estimée : 45 min

Un bucket conforme aux bonnes pratiques et un site statique servi localement.

Mise en place #

Étapes guidées, avec leur correction.

  1. 1. Démarrer LocalStack

    Pourquoi ? LocalStack expose tous les services émulés sur le port 4566 ; awslocal est le CLI AWS préconfiguré pour ce point d'accès.

    Démarrez LocalStack en arrière-plan, vérifiez l'état des services et l'identité renvoyée.
    Voir la correction
    localstack start -d
    localstack status services | head -20
    awslocal sts get-caller-identity          # compte fictif 000000000000
    export AWS_DEFAULT_REGION=eu-west-3
  2. 2. Créer un bucket versionné et chiffré

    Pourquoi ? Le versionnage protège contre les suppressions accidentelles ; le chiffrement par défaut s'applique à tous les nouveaux objets.

    Créez exports-equipe, activez le versionnage et le chiffrement par défaut, déposez un fichier deux fois et listez ses versions.
    Voir la correction
    awslocal s3 mb s3://exports-equipe
    awslocal s3api put-bucket-versioning --bucket exports-equipe --versioning-configuration Status=Enabled
    awslocal s3api put-bucket-encryption --bucket exports-equipe \
      --server-side-encryption-configuration '{"Rules":[{"ApplyServerSideEncryptionByDefault":{"SSEAlgorithm":"AES256"}}]}'
    echo "v1" > rapport.csv && awslocal s3 cp rapport.csv s3://exports-equipe/2026/
    echo "v2" > rapport.csv && awslocal s3 cp rapport.csv s3://exports-equipe/2026/
    awslocal s3api list-object-versions --bucket exports-equipe --prefix 2026/rapport.csv --query 'Versions[].[VersionId,IsLatest]'
  3. 3. Imposer TLS par une politique de bucket

    Pourquoi ? Refuser les requêtes non chiffrées est un contrôle classique des audits de sécurité.

    Appliquez une politique qui refuse toute requête dont aws:SecureTransport est faux, puis relisez-la.
    Voir la correction
    cat > politique.json <<'EOF'
    {"Version":"2012-10-17","Statement":[{"Sid":"TLSUniquement","Effect":"Deny","Principal":"*","Action":"s3:*",
     "Resource":["arn:aws:s3:::exports-equipe","arn:aws:s3:::exports-equipe/*"],
     "Condition":{"Bool":{"aws:SecureTransport":"false"}}}]}
    EOF
    awslocal s3api put-bucket-policy --bucket exports-equipe --policy file://politique.json
    awslocal s3api get-bucket-policy --bucket exports-equipe --query Policy --output text | python3 -m json.tool
  4. 4. Automatiser le cycle de vie

    Pourquoi ? Déplacer les vieux exports vers une classe moins chère réduit la facture sans intervention.

    Ajoutez une règle : passage en STANDARD_IA à 30 jours, en DEEP_ARCHIVE à 180 jours, suppression des anciennes versions à 90 jours.
    Voir la correction
    cat > cycle.json <<'EOF'
    {"Rules":[{"ID":"archiver","Status":"Enabled","Filter":{"Prefix":"2026/"},
      "Transitions":[{"Days":30,"StorageClass":"STANDARD_IA"},{"Days":180,"StorageClass":"DEEP_ARCHIVE"}],
      "NoncurrentVersionExpiration":{"NoncurrentDays":90}}]}
    EOF
    awslocal s3api put-bucket-lifecycle-configuration --bucket exports-equipe --lifecycle-configuration file://cycle.json
    awslocal s3api get-bucket-lifecycle-configuration --bucket exports-equipe
  5. 5. Publier un site statique et partager un lien temporaire

    Pourquoi ? S3 sert des sites statiques ; un lien présigné donne un accès limité dans le temps sans rendre le bucket public.

    Créez le bucket docs-site, activez l'hébergement web, synchronisez un dossier et ouvrez le site ; générez un lien présigné de 15 minutes vers le rapport.
    Voir la correction
    mkdir -p site && echo '<h1>Documentation</h1>' > site/index.html
    awslocal s3 mb s3://docs-site
    awslocal s3 website s3://docs-site --index-document index.html
    awslocal s3 sync site s3://docs-site --delete
    curl -s http://docs-site.s3-website.localhost.localstack.cloud:4566/
    awslocal s3 presign s3://exports-equipe/2026/rapport.csv --expires-in 900

Niveau de difficulté : ●●○○○ (2/5)

Mon suivi

  • ⏱ Durée estimée : ≈ 45 min

Connectez-vous pour suivre votre progression et prendre des notes. Se connecter

💬 Poser une question

Articles recommandés

Comprendre AWS : infrastructure mondiale, comptes, outils et tarification

Les bases indispensables pour démarrer sur Amazon Web Services : régions, zones de disponibilité ...

Le stockage sur AWS : S3, EBS, EFS et sauvegarde

Stocker des données sur AWS : Amazon S3 (buckets, classes de stockage, versionnage, cycle de vie,...

IAM : identités, rôles et politiques sur AWS

Sécuriser l'accès à AWS avec IAM : utilisateurs, groupes, rôles et politiques JSON, évaluation de...

Le calcul sur AWS : EC2, Auto Scaling, Lambda et conteneurs

Choisir et utiliser les services de calcul AWS : instances EC2 (types, AMI, EBS, user data, modèl...

Les bases de données sur AWS : RDS, Aurora, DynamoDB et ElastiCache

Choisir une base de données managée sur AWS : RDS et Aurora pour le relationnel (multi-AZ, réplic...

Infrastructure as Code sur AWS : CloudFormation, CDK, Terraform et Well-Architected

Décrire et déployer son infrastructure AWS en code avec CloudFormation, le CDK ou Terraform, auto...

Terraform sur plusieurs clouds : AWS, Azure, Google Cloud, OVHcloud et Kubernetes

Utiliser Terraform avec les principaux fournisseurs : aws, azurerm, google, ovh et openstack, kub...

Maîtriser ses coûts AWS : modèles de prix, budgets et optimisation

Comprendre et optimiser la facture AWS : facteurs de coût (calcul, stockage, transfert de données...

Le réseau AWS : VPC, sous-réseaux, routage et sécurité

Concevoir un réseau AWS : VPC et plages CIDR, sous-réseaux publics et privés, tables de routage, ...

Soutenir

♥ SOUTENIR

Soutenez RousselTM Learning

Les formations, articles, TP et attestations restent gratuits et sans publicité intrusive. Une contribution libre, du montant de votre choix, finance l’hébergement, les environnements de TP et l’écriture de nouveaux contenus.

Contribuer avec PayPal Montant libre · carte bancaire ou compte PayPalEn savoir plus
QR code PayPal
Ou scannez ce QR code avec votre téléphone

Merci, chaque contribution compte !