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
Mise en place #
Étapes guidées, avec leur correction.
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-32. 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éezexports-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. 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 dontaws:SecureTransportest 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.tool4. 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-equipe5. 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 bucketdocs-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
Connectez-vous pour suivre votre progression et prendre des notes. Se connecter
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, ...