DevOpsFacile
AccueilParcours de formationCertificationsModulesCheat SheetÀ Propos
DevOpsFacile

Une plateforme d'apprentissage complète pour maîtriser les pratiques DevOps modernes, du débutant à l'expert.

contact@devopsfacile.fr

Formation

  • Parcours de formation
  • Modules

Informations

  • À Propos
  • Conditions d'utilisation
  • Confidentialité
  • Mentions légales

© 2026 DevOps Facile. Tous droits réservés.

Fait avec pour la communauté DevOps

ModulesGCP - Débutant : premiers pas dans le cloud Google05 - Stocker et gérer des fichiers avec Cloud Storage

Détails

  • 25 minutes
  • Débutant

Objectifs

  • Créer un bucket Cloud Storage avec gsutil et gcloud
  • Uploader, lister et télécharger des objets
  • Configurer les classes de stockage et le versioning
  • Rendre un objet public et générer une URL signée
Module GCP - Débutant : premiers pas dans le cloud Google

Exercice 05 : Stocker et gérer des fichiers avec Cloud Storage

🎯 Objectifs

À la fin de cet exercice, vous serez capable de :

  • ✅ Créer un bucket Cloud Storage avec une classe de stockage adaptée
  • ✅ Uploader et gérer des fichiers avec gcloud storage et gsutil
  • ✅ Activer le versioning et récupérer une version antérieure
  • ✅ Générer une URL signée pour partager un fichier temporairement

Durée estimée : 25 minutes

Difficulté : ⭐☆☆☆☆ (Débutant)

Prérequis : Compte GCP, gcloud CLI configurée


📖 Contexte

Cloud Storage est le service de stockage d'objets de GCP. C'est l'équivalent d'AWS S3 et d'Azure Blob Storage. Il est utilisé pour stocker des données non structurées : images, vidéos, fichiers de données, artefacts de build, sauvegardes. Il s'intègre nativement avec tous les services GCP (BigQuery, Dataflow, Vertex AI...).


📋 Énoncé

Créez un bucket, gérez des fichiers et configurez les permissions d'accès.


🧭 Déroulement de l'exercice

Tâche 1 : Créer un bucket

bash
# Activer l'API
gcloud services enable storage.googleapis.com

# Les noms de bucket sont uniques globalement
PROJECT_ID=$(gcloud config get-value project)
BUCKET_NAME="devops-exercice-${PROJECT_ID}"
echo "Nom du bucket : $BUCKET_NAME"

# Créer le bucket (nouvelle CLI gcloud storage)
gcloud storage buckets create gs://$BUCKET_NAME \
  --location=europe-west9 \
  --storage-class=STANDARD \
  --uniform-bucket-level-access     # Pas d'ACL individuels (meilleure pratique)

# Vérifier
gcloud storage buckets list --filter="name:devops-exercice"
gcloud storage buckets describe gs://$BUCKET_NAME

Indice : --uniform-bucket-level-access désactive les ACL au niveau des objets individuels. Tout l'accès est contrôlé par IAM au niveau du bucket. C'est la meilleure pratique de sécurité recommandée par Google.


Tâche 2 : Uploader et gérer des fichiers

bash
# Créer des fichiers de test
echo "Contenu du fichier de test - version 1" > fichier-test.txt
mkdir -p mon-dossier && echo "<h1>Page HTML</h1>" > mon-dossier/index.html
echo '{"key":"value","numero":42}' > data.json

# Uploader un fichier
gcloud storage cp fichier-test.txt gs://$BUCKET_NAME/

# Uploader un dossier entier
gcloud storage cp -r mon-dossier/ gs://$BUCKET_NAME/

# Uploader avec métadonnées personnalisées
gcloud storage cp data.json gs://$BUCKET_NAME/ \
  --content-type=application/json

# Lister le contenu du bucket
gcloud storage ls gs://$BUCKET_NAME/
gcloud storage ls -r gs://$BUCKET_NAME/  # Récursif avec tailles

# Télécharger
gcloud storage cp gs://$BUCKET_NAME/fichier-test.txt ./telecharge.txt
cat telecharge.txt

# Supprimer un objet
gcloud storage rm gs://$BUCKET_NAME/data.json

# Synchroniser un dossier local avec le bucket (comme rsync)
gcloud storage rsync mon-dossier/ gs://$BUCKET_NAME/site/ --delete-unmatched-destination-objects

Tâche 3 : Activer le versioning

bash
# Activer le versioning sur le bucket
gcloud storage buckets update gs://$BUCKET_NAME --versioning

# Modifier le fichier et re-uploader
echo "Contenu modifié - version 2" > fichier-test.txt
gcloud storage cp fichier-test.txt gs://$BUCKET_NAME/

echo "Encore modifié - version 3" > fichier-test.txt
gcloud storage cp fichier-test.txt gs://$BUCKET_NAME/

# Lister toutes les versions
gsutil ls -a gs://$BUCKET_NAME/fichier-test.txt

# Récupérer la première version (generation la plus ancienne)
FIRST_GEN=$(gsutil ls -a gs://$BUCKET_NAME/fichier-test.txt | head -1 | grep -oP '#\K[0-9]+')
echo "Première version (generation) : $FIRST_GEN"

gsutil cp "gs://$BUCKET_NAME/fichier-test.txt#$FIRST_GEN" ./version1-recuperee.txt
cat version1-recuperee.txt
# → Contenu du fichier de test - version 1

Tâche 4 : URL signée pour partage temporaire

bash
# Créer un compte de service pour la signature
SA_EMAIL="storage-signer@${PROJECT_ID}.iam.gserviceaccount.com"

gcloud iam service-accounts create storage-signer \
  --display-name="Signature d'URLs Cloud Storage"

# Accorder les droits de lecture sur le bucket
gsutil iam ch serviceAccount:$SA_EMAIL:roles/storage.objectViewer \
  gs://$BUCKET_NAME

# Créer une clé pour le compte de service
gcloud iam service-accounts keys create /tmp/signer-key.json \
  --iam-account=$SA_EMAIL

# Générer une URL signée valable 1 heure
gsutil signurl -d 1h /tmp/signer-key.json \
  gs://$BUCKET_NAME/fichier-test.txt

# L'URL ressemble à :
# https://storage.googleapis.com/BUCKET/fichier-test.txt?X-Goog-Signature=...

Indice : Les URLs signées sont idéales pour donner un accès temporaire à des fichiers privés (factures client, rapports confidentiels). Elles sont signées avec une clé de service account et expirent automatiquement.


Tâche 5 : Nettoyer

bash
# Supprimer toutes les versions et le bucket
gsutil rm -r gs://$BUCKET_NAME
gcloud iam service-accounts delete $SA_EMAIL --quiet
rm /tmp/signer-key.json

✅ Vérification du résultat

  • gcloud storage ls gs://$BUCKET_NAME/ liste les fichiers uploadés
  • Après 3 uploads, gsutil ls -a montre 3 générations de fichier-test.txt
  • La version 1 est récupérable avec son numéro de génération
  • L'URL signée donne accès au fichier pendant 1 heure

💡 À retenir

Classes de stockage Cloud Storage :

ClasseFréquence d'accèsCoût stockageFrais de récupération
StandardFréquent$$$✅ Aucun
NearlineMensuel$$$
ColdlineTrimestriel$$$
ArchiveAnnuel¢$$$

Free Tier Cloud Storage : 5 Go gratuits par mois (classe Standard, région US) + 1 Go d'operations A, 10 Go d'operations B.


✨ Solution Complète

bash
BUCKET="gs://mon-bucket-unique"

# Commandes essentielles
gcloud storage cp fichier.txt $BUCKET/               # Upload
gcloud storage cp $BUCKET/fichier.txt ./local/       # Download
gcloud storage ls -r $BUCKET/                        # Lister récursivement
gcloud storage rm $BUCKET/fichier.txt                # Supprimer
gcloud storage rsync ./local/ $BUCKET/dossier/       # Synchroniser
Retour au module

Sur cette page

  • 🎯 Objectifs
  • 📖 Contexte
  • 📋 Énoncé
  • 🧭 Déroulement de l'exercice
  • Tâche 1 : Créer un bucket
  • Tâche 2 : Uploader et gérer des fichiers
  • Tâche 3 : Activer le versioning
  • Tâche 4 : URL signée pour partage temporaire
  • Tâche 5 : Nettoyer
  • ✅ Vérification du résultat
  • 💡 À retenir
  • ✨ Solution Complète