Exercice 05 : Créer et configurer un bucket S3
🎯 Objectifs
À la fin de cet exercice, vous serez capable de :
- ✅ Créer un bucket S3 avec un nom unique dans la région de votre choix
- ✅ Uploader des fichiers via la console et via l'AWS CLI
- ✅ Activer le versioning et comprendre son intérêt
- ✅ Configurer un bucket pour héberger un site web statique
Durée estimée : 25 minutes
Difficulté : ⭐☆☆☆☆ (Débutant)
Prérequis : Compte AWS créé (Exercice 01), AWS CLI configuré
📖 Contexte
S3 (Simple Storage Service) est le service de stockage d'objets d'AWS. Il est utilisé partout : hébergement de sites statiques, stockage de logs, de sauvegardes, d'artefacts de build, d'images... Sa durabilité est de 99.999999999% (11 neuf), ce qui en fait l'un des services de stockage les plus fiables au monde.
📋 Énoncé
Créez un bucket S3, explorez ses fonctionnalités et déployez un mini site web statique.
🧭 Déroulement de l'exercice
Tâche 1 : Créer le bucket depuis la console
- Console AWS → S3 → Créer un compartiment
Configuration :
- Nom du compartiment :
devops-exercice-<votre-prenom>-2024(doit être unique globalement) - Région AWS :
eu-west-3(Paris) ou votre région habituelle - Propriété des objets : ACL désactivées (recommandé)
- Paramètres de blocage de tout accès public : Activer (par défaut)
- Gestion des versions : Activer ← important pour la tâche suivante
Indice : Les noms de bucket S3 sont uniques dans le monde entier (pas seulement dans votre compte). S'il est déjà pris, ajoutez votre nom ou un suffixe aléatoire. Les règles de nommage : minuscules, chiffres, tirets uniquement, 3-63 caractères.
Tâche 2 : Uploader des fichiers
Via la console :
- Cliquer sur votre bucket → Charger
- Créer un fichier
hello.txtsur votre machine avec le contenu "Bonjour S3 !" - Le charger via l'interface
Via l'AWS CLI :
# Configurer l'AWS CLI (si pas encore fait)
aws configure
# AWS Access Key ID : [votre clé IAM]
# AWS Secret Access Key : [votre secret]
# Default region : eu-west-3
# Default output format : json
# Uploader un fichier
BUCKET="devops-exercice-<votre-prenom>-2024"
echo "Fichier uploadé via CLI !" > fichier-cli.txt
aws s3 cp fichier-cli.txt s3://$BUCKET/
# Lister le contenu du bucket
aws s3 ls s3://$BUCKET/
# Uploader un dossier entier
mkdir -p mon-site && echo "<h1>Mon site sur S3</h1>" > mon-site/index.html
aws s3 sync mon-site/ s3://$BUCKET/site/ --deleteTâche 3 : Tester le versioning
# Uploader une première version
echo "Version 1" > version-test.txt
aws s3 cp version-test.txt s3://$BUCKET/
# Modifier le fichier et re-uploader
echo "Version 2 - modifiée" > version-test.txt
aws s3 cp version-test.txt s3://$BUCKET/
# Lister les versions (versioning activé = toutes les versions conservées)
aws s3api list-object-versions \
--bucket $BUCKET \
--prefix version-test.txt
# Récupérer une ancienne version
VERSION_ID=$(aws s3api list-object-versions \
--bucket $BUCKET \
--prefix version-test.txt \
--query 'Versions[-1].VersionId' \
--output text)
aws s3api get-object \
--bucket $BUCKET \
--key version-test.txt \
--version-id "$VERSION_ID" \
version-recuperee.txt
cat version-recuperee.txt
# → Version 1Indice : Le versioning protège contre les suppressions et modifications accidentelles. Même si vous supprimez un objet, il reste accessible via sa version. Attention : le versioning augmente les coûts de stockage. En production, combinez-le avec une règle de cycle de vie pour supprimer les anciennes versions après X jours.
Tâche 4 : Héberger un site statique
# Créer les fichiers du site
cat > mon-site/index.html << 'HTML'
<!DOCTYPE html>
<html lang="fr">
<head><title>Mon site S3</title></head>
<body>
<h1>Mon premier site hébergé sur AWS S3 !</h1>
<p>Déployé avec la AWS CLI</p>
</body>
</html>
HTMLConsole AWS :
- Bucket → Propriétés → Hébergement de site Web statique → Activer
- Document d'index :
index.html - Sauvegarder
Rendre les fichiers publics :
- Bucket → Autorisations → Désactiver "Bloquer tout accès public" pour ce bucket
- Ajouter une politique de bucket :
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "PublicReadGetObject",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::devops-exercice-<votre-prenom>-2024/*"
}
]
}# Uploader le site
aws s3 sync mon-site/ s3://$BUCKET/ --delete
# L'URL du site est : http://$BUCKET.s3-website.eu-west-3.amazonaws.com
echo "http://$BUCKET.s3-website.eu-west-3.amazonaws.com"✅ Vérification du résultat
- Le bucket est créé avec le versioning activé
aws s3 ls s3://$BUCKET/liste les fichiers uploadés- Une ancienne version d'un fichier est récupérable via
aws s3api get-object --version-id - L'URL du site statique affiche la page HTML dans le navigateur
💡 À retenir
Classes de stockage S3 (coût vs fréquence d'accès) :
| Classe | Cas d'usage | Coût relatif |
|---|---|---|
| S3 Standard | Accès fréquent | $$$ |
| S3 Standard-IA | Accès peu fréquent | $$ |
| S3 Glacier | Archives (minutes à heures) | $ |
| S3 Glacier Deep Archive | Archives long terme | ¢ |
Free Tier S3 : 5 Go de stockage Standard, 20 000 requêtes GET, 2 000 requêtes PUT par mois.
✨ Solution Complète
BUCKET="mon-bucket-unique"
# Uploader
aws s3 cp fichier.txt s3://$BUCKET/
aws s3 sync ./dossier/ s3://$BUCKET/dossier/ --delete
# Lister
aws s3 ls s3://$BUCKET/ --recursive
# Télécharger
aws s3 cp s3://$BUCKET/fichier.txt ./local/
# Supprimer
aws s3 rm s3://$BUCKET/fichier.txt