Introduction
Une équipe publie un répertoire de rapports CSV quotidiens. Vous chargerez le répertoire, publierez des modifications et supprimerez un rapport stocké devenu obsolète en protégeant une archive distincte.
Terminez d'abord Organisez les documents avec des clés et des métadonnées, notamment ses notions de compartiment, de clé, de préfixe et de téléchargement. Cette nouvelle VM fournit la connexion CLI, les rapports locaux et un compartiment contenant uniquement l'archive. Utilisez Terminal pour les commandes et l'onglet AWS View, à côté, pour observer vos changements.
Lien avec les certifications
Ce laboratoire propose une pratique des sujets d’examen suivants.
- Cloud Practitioner (CLF-C02) · Tâche 3.6: Synchronisation de répertoires et suppression ciblée dans S3.
- Solutions Architect – Associate (SAA-C03) · Tâche 3.1: Synchronisation de répertoires et suppression ciblée dans S3.
- Developer – Associate (DVA-C02) · Tâche 1.3: Synchronisation de répertoires et suppression ciblée dans S3.
Publiez le répertoire de rapports préparé
Dans cette étape, vous publierez deux rapports locaux vers le préfixe daily/ et comprendrez comment leurs noms de fichiers correspondent aux clés d'objet.
Rejoignez l'espace de travail avec cd (change directory, changer de répertoire) :
cd /home/labex/project
Examinez le répertoire de rapports préparé avec ls, qui liste ses noms de fichiers locaux :
ls reports
La liste contient monday.csv et tuesday.csv. Tous deux sont des fichiers CSV : un en-tête nomme les colonnes et des virgules séparent les valeurs de chaque enregistrement. Examinez le rapport du lundi avec cat, qui affiche le contenu d'un fichier :
cat reports/monday.csv
date,orders
2026-09-28,120
Listez le compartiment préparé. Pour un emplacement S3, --recursive affiche les clés complètes de tout le compartiment :
aws s3 ls s3://labex-report-delivery/ --recursive
Seul archive/retention.txt est présent. L'archive appartient à un processus distinct et doit être conservée pendant votre synchronisation quotidienne.
aws s3 sync prend une source et une destination, dans cet ordre. Il examine récursivement les fichiers du répertoire source ; vous n'avez pas besoin de --recursive pour sync. Chaque nom de fichier relatif devient une clé sous le préfixe de destination. reports/monday.csv devient donc daily/monday.csv, plutôt que daily/reports/monday.csv.
aws s3 sync reports/ s3://labex-report-delivery/daily/
La commande indique les chargements pour le lundi et le mardi ; leur ordre dans la sortie peut varier. Listez à nouveau tout le compartiment :
aws s3 ls s3://labex-report-delivery/ --recursive
Vous devriez trouver trois clés : archive/retention.txt, daily/monday.csv et daily/tuesday.csv. AWS View affiche les mêmes objets. Cliquez sur daily/monday.csv pour lire le rapport CSV stocké de deux lignes. L'archive reste en dehors de la destination daily/ sélectionnée.
Synchronisez une modification et un nouveau rapport
Dans cette étape, vous mettrez à jour un rapport, en ajouterez un autre et transférerez ces changements sans recharger un rapport inchangé.
Exécuter sync avec la même source et la même destination est sans risque lorsque ni l'une ni l'autre n'a changé :
aws s3 sync reports/ s3://labex-report-delivery/daily/
Aucune ligne de chargement n'apparaît lorsque les fichiers existants sont déjà à jour. Pour les transferts locaux vers S3, la CLI examine si la clé de destination manque, si les tailles diffèrent ou si le fichier local a une date de modification plus récente. Elle ne surveille pas continuellement le répertoire : vous exécutez sync lorsque vous souhaitez publier des changements.
Ajoutez au rapport du lundi un lot tardif de 25 commandes. printf affiche le texte entre guillemets ; \n termine la ligne. L'opérateur >> du shell ajoute du contenu à un fichier local au lieu de le remplacer :
printf '2026-09-28,25\n' >> reports/monday.csv
Examinez le résultat de trois lignes :
cat reports/monday.csv
date,orders
2026-09-28,120
2026-09-28,25
Créez le rapport du mercredi. Ici, > écrit un nouveau fichier, remplaçant tout contenu existant à ce chemin :
printf 'date,orders\n2026-09-30,150\n' > reports/wednesday.csv
Avant la publication, le rapport du lundi stocké contient toujours deux lignes et le mercredi est absent d'AWS View. Modifier uniquement les fichiers locaux ne change pas S3.
Publiez à nouveau :
aws s3 sync reports/ s3://labex-report-delivery/daily/
Vous devriez voir les chargements du rapport du lundi modifié et du nouveau rapport du mercredi. Le mardi est inchangé et n'est donc pas chargé. C'est un transfert incrémental : il copie les changements plutôt que de recopier systématiquement tous les fichiers.
Dans AWS View, le lundi affiche maintenant le lot tardif et le mercredi apparaît. Téléchargez le lundi vers un chemin local distinct pour comparer le contenu réellement stocké :
aws s3 cp s3://labex-report-delivery/daily/monday.csv retrieved-monday.csv
cmp compare les fichiers octet par octet. Il se termine avec succès sans afficher de différences lorsque les contenus correspondent. && affiche le message uniquement après cette comparaison réussie :
cmp reports/monday.csv retrieved-monday.csv && echo 'Updated report matches'
Updated report matches
Cela confirme que la mise à jour a atteint le stockage ; un simple message de commande réussie ne vous indiquerait pas quels octets ont été stockés.
L'exemple ci-dessous montre le rapport du lundi stocké, développé après la mise à jour. Le mercredi est présent et l'archive distincte reste dans le compartiment :

Mettez en miroir uniquement le préfixe quotidien
Dans cette étape, vous supprimerez un rapport obsolète à la destination en protégeant l'archive sans rapport avec cette opération.
La destination de sync est daily/ ; archive/ reste en dehors de ce périmètre.

Le rapport du mardi ne fait plus partie de la collection quotidienne publiée. Supprimez uniquement ce fichier local avec rm (remove). C'est une commande du système de fichiers local ; elle ne supprime donc pas d'objet S3 :
rm reports/tuesday.csv
Relancez une synchronisation ordinaire :
aws s3 sync reports/ s3://labex-report-delivery/daily/
Listez le préfixe de destination :
aws s3 ls s3://labex-report-delivery/daily/ --recursive
Le mardi apparaît toujours. Par défaut, sync copie les fichiers manquants ou mis à jour, mais laisse les objets supplémentaires à la destination. Supprimer un fichier source seul ne supprime pas sa copie stockée.
Un miroir maintient l'ensemble de fichiers de la destination aligné sur la source, suppressions comprises. --delete supprime les clés de destination sans fichier source correspondant. Combinez-le d'abord avec --dryrun, qui affiche les opérations prévues sans les exécuter :
aws s3 sync reports/ s3://labex-report-delivery/daily/ --delete --dryrun
L'essai à blanc devrait lister uniquement la suppression de daily/tuesday.csv. Le lundi et le mercredi correspondent à la source, et archive/retention.txt est en dehors de daily/. Gardez le préfixe de destination exact : utiliser la racine du compartiment inclurait l'archive dans le périmètre.
Après avoir vérifié la suppression prévue, exécutez la même opération sans --dryrun :
aws s3 sync reports/ s3://labex-report-delivery/daily/ --delete
La commande indique la suppression du mardi. Examinez tout le compartiment pour vérifier à la fois ce qui a disparu et ce qui a été conservé :
aws s3 ls s3://labex-report-delivery/ --recursive
Les clés restantes sont daily/monday.csv, daily/wednesday.csv et archive/retention.txt. Dans AWS View, ouvrez l'objet d'archive et confirmez qu'il affiche toujours Keep the archive outside daily synchronization. Votre opération de mise en miroir a affecté uniquement le préfixe choisi.
Supprimez les ressources de stockage du laboratoire
Dans cette étape, vous nettoierez les rapports et l'archive créés pour cet exercice, puis supprimerez le compartiment vide.
L'archive devait être conservée pendant la mise en miroir quotidienne, mais c'est aussi une ressource jetable appartenant à cet exercice. Vous pouvez maintenant la supprimer explicitement. Supprimez d'abord les deux objets de rapports quotidiens avec une opération récursive limitée à daily/ :
aws s3 rm s3://labex-report-delivery/daily/ --recursive
La sortie confirme les deux suppressions de rapports. Supprimez l'archive par sa clé complète :
aws s3 rm s3://labex-report-delivery/archive/retention.txt
Confirmez que le compartiment est vide :
aws s3 ls s3://labex-report-delivery/ --recursive
Une commande réussie sans lignes d'objets établit qu'il est vide. aws s3 rb (remove bucket) peut maintenant supprimer le conteneur :
aws s3 rb s3://labex-report-delivery
La sortie est remove_bucket: labex-report-delivery. Vérifiez les compartiments restants :
aws s3 ls
Aucune ligne de compartiment ne reste. AWS View affiche No buckets après une requête d'état réussie. Vos fichiers de rapports locaux restent disponibles pour examen ; supprimer des ressources de stockage ne supprime pas ces copies locales.
Résumé
Vous avez publié un répertoire local de rapports vers un préfixe S3, répété sync sans changements, chargé un rapport modifié et un nouveau rapport, puis comparé une mise à jour récupérée avec sa source. Vous avez vu qu'une synchronisation ordinaire conserve les objets supplémentaires à la destination, puis prévisualisé et exécuté une mise en miroir avec --delete limitée à daily/.
L'archive a été conservée pendant cette opération parce qu'elle se trouvait en dehors du préfixe de destination. Vous avez vérifié le nouvel état et les données conservées avant de nettoyer toutes les ressources de stockage du laboratoire. Pour vos futurs processus, choisissez la source, la destination et le périmètre de suppression avant d'exécuter sync.



