> ## Content Index
> Fetch the complete content index at: https://www.idriss-benbassou.com/llms.txt
> Use this file to discover other available public pages before exploring further.

# FinOps AWS : lire la facture avec Cost Explorer
- URL: https://www.idriss-benbassou.com/finops-aws-cost-explorer-nettoyage-compte/
- Published: 2026-08-26T22:02:10.000Z
- Updated: 2026-08-26T22:02:10.000Z
- Author: Idriss BENBASSOU
- Tags: AWS, #rating-2

On a très bien avancé dans la formation mais il reste une chose que personne n'aime regarder mais qui décide de la survie d'un projet et c'est la facture.

En mission, le data engineer qui sait dire "ce dashboard coûte 400 € par mois et voilà pourquoi" a un poids que les autres n'ont pas. Et c'est souvent lui qu'on appelle quand la direction découvre une facture cloud multipliée par trois.

On va alors lire Cost Explorer, comprendre ce qui coûte vraiment dans un pipeline data, poser les garde-fous, et la checklist de nettoyage complète de [la formation](https://www.idriss-benbassou.com/formation-aws/).

## Lire sa facture avec Cost Explorer

Ouvre Billing and Cost Management, puis Cost Explorer dans le menu de gauche.

Le réglage qui rend le graphique utile, c'est le Group by. Par défaut il affiche un total sans intérêt. Mets Group by : Service et Granularity : Daily ou Monthly pour voir qui consomme quoi

![](https://storage.ghost.io/c/60/f1/60f18be4-df79-4956-8e4a-c2fa80212e93/content/images/2026/08/image-130.png)

Si AWS affiche une popup quand tu choisis Group by, il faut accepter. Il ne peut pas afficher la prévision et le détail par service en même temps, il désactive donc la prévision, ce qui ne nous intéresse pas ici.

### Pourquoi tout est à 0,00 $ sur ton écran

Surprise probable, le tableau affiche `$0.00` partout, et même des `-$0.00` et ce n'est pas un bug ou un problème d'arrondi.

Cost Explorer affiche par défaut le coût net, c'est-à-dire après application des crédits et sur notre compte de formation avec les 100 $ offerts à l'ouverture, les crédits couvrent tout, donc le net tombe à zéro. Les valeurs négatives sont justement les crédits appliqués en face des coûts bruts.

La bonne nouvelle c'est que la formation n'a rien coûté ;) .

Pour suivre ce qu'il reste sur les crédits offerts et combien la formation a consommé au total, il faut regarder dans le menu Credits.

![](https://storage.ghost.io/c/60/f1/60f18be4-df79-4956-8e4a-c2fa80212e93/content/images/2026/08/image-131.png)

💡

Cost Explorer montre ce que tu payes, pas ce que tu consommes. Sur un compte avec des crédits, ce sont deux choses différentes.

Nb : Quand une direction demande "combien nous coûte ce projet", il faut savoir si la réponse attendue est le coût brut (ce que le projet consomme) ou le net (ce qui est facturé après crédits, remises et engagements) car les deux chiffres peuvent être très différents.

## Ce qui coûte dans un pipeline data

Par expérience, il y a généralement 5 éléments qui reviennent le plus souvent et qui peuvent faire grimper la facture très vite si on ne fait pas attention :

- Le compute qui tourne pour rien car un job planifié toutes les heures alors que la donnée arrive une fois par jour, un crawler qui repasse sur des partitions inchangées, un cluster laissé allumé le week-end. C'est le premier poste et le plus facile à corriger.
- Le scan de données, Athena facture 5 $ par To scanné, et une requête sur du CSV non partitionné scanne tout à chaque fois. C'est ce qu'on a réglé [avec Parquet et le partitionnement](https://www.idriss-benbassou.com/athena-csv-vs-parquet-ctas-donnee-scannee/), et sur de vrais volumes ce sont les deux leviers qui divisent une facture par 10.
- Le sur-dimensionnement avec des workers Glue en G.2X pour traiter 100 Mo, ou une base capacity Redshift à 512 RPU au lieu de 32 RPU car il ne faut jamais oublier qu'on paye la puissance réservée, pas celle utilisée.
- Le stockage oublié car les résultats de requêtes Athena par exemple qui s'accumulent depuis deux ans, les anciennes versions gardées par le versioning, les zones intermédiaires jamais purgées. Chacun coûte peu, l'ensemble finit par avoir un montant important.
- Le transfert de données car sortir de la donnée d'AWS coûte environ 0,09 $ par Go donc entre services d'une même région, c'est gratuit, mais ce n'est pas le cas entre régions différentes, et c'est pour ça qu'en règle générale, on essaie de garder tout le pipeline dans la même région AWS.

## Les trois garde-fous à poser

Le budget avec alerte, celui qu'on a mis place [au début de la formation](https://www.idriss-benbassou.com/creer-compte-aws-free-tier-mfa-iam-budget/). On l'a mis à 5 $, mais en mission on le fix sur le montant attendu et on l'affine chaque trimestre.

Les tags de coûts, c’est ultra important pour la gouvernance et le contrôle des coûts et on va le voir prochainement en détail dans un article dédié. Mais il faut retenir que chaque ressource peut porter des tags et que Cost Explorer sait les regrouper. En mission, on a généralement un tag `projet` et un tag `environnement` (`dev`, `prod`) pour répondre facilement à la question qui revient toujours, combien coûte ce projet ? Le tag doit être activé dans **Billing > Cost allocation tags** pour apparaître dans les rapports, et il ne remonte pas rétroactivement, donc on tague dès le premier jour.

Les lifecycle rules, comme celle [de l'article data lake](https://www.idriss-benbassou.com/data-lake-s3-zones-raw-clean-curated-versioning-lifecycle/). C'est le seul garde-fou qui travaille tout seul en mode automatique.

## Le grand nettoyage

Si tu veux repartir d'un compte propre, voici l'ordre à suivre. On termine par S3, parce que les autres services peuvent en dépendre.

1\. Désactiver ce qui se déclenche tout seul. Le schedule EventBridge, le trigger S3 de la Lambda.

2\. Redshift. Supprime le workgroup, puis le namespace. Attention, la suppression du namespace propose de créer un snapshot final, décline si tu ne veux rien garder, un snapshot est facturé au stockage.

3\. Glue, supprime Les jobs (`job-clean-commandes`, sa version PySpark), le crawler, puis les databases du catalogue.

4\. Lambda et Step Functions supprime la fonction, la state machine, le schedule EventBridge.

5\. Athena, Rien à supprimer, mais vérifie qu'une lifecycle rule purge bien `athena-results/`.

6\. KMS, Repasse le bucket en SSE-S3 avant de supprimer la clé, sinon les fichiers chiffrés deviennent illisibles. Puis programme la suppression de la clé, avec un délai obligatoire de 7 à 30 jours.

7\. S3 en dernier, vide le bucket, versions comprises (le bouton "Empty" ne suffit pas si le versioning est actif, il faut cocher l'affichage des versions ou utiliser la CLI), puis supprime-le.

```powershell
# Vider un bucket versionné entièrement
aws s3 rm s3://ibdata-datalake-formation --recursive
aws s3api delete-objects --bucket ibdata-datalake-formation --delete "$(aws s3api list-object-versions --bucket ibdata-datalake-formation --output json --query '{Objects: Versions[].{Key:Key,VersionId:VersionId}}')"

```

8\. IAM, les rôles et policies créés au fil des articles, plus le user `analyste-test`.

## Ce que ça a coûté, en vrai

Le gros des dépenses de notre formation vient de Glue (les jobs et les crawlers), suivi de Redshift, et le reste tient dans les centimes.

Et si tu gardes le compte pour continuer à pratiquer, je te recommande de toujours garde au minimum ces trois réflexes, le budget avec alerte, les lifecycle rules sur les préfixes techniques, et un passage dans Cost Explorer une fois par mois.

## 

## La suite ?

Il manque la dernière étape, celle qui rend la donnée utile au métier, la **restitution**. Prochain article, QuickSight, le service BI d'AWS, branché sur Athena pour construire le dashboard du projet e-commerce.

## Aller plus loin

Le programme complet du parcours est sur la page de [la formation AWS](https://www.idriss-benbassou.com/formation-aws/).

Tu prépares la certification AWS Certified Data Engineer Associate (DEA-C01) ? L'optimisation des coûts et le dimensionnement des ressources font partie du domaine opérations de l'examen. Pour t'entraîner, j'ai créé des questions d'examen blanc en français.

👉 [S'entraîner sur DataCertification.fr](https://datacertification.fr/certifications?ref=idriss-benbassou.com)

Tu veux que je t'accompagne sur ton projet data (AWS, Snowflake, dbt, modélisation, coûts) ?

👉 [Réserver un appel de 30 minutes](https://calendly.com/idriss-benbassou-datavio/30min?ref=idriss-benbassou.com)

## Questions fréquentes

#### Comment savoir quel service coûte le plus cher sur AWS ?

Dans Cost Explorer, en réglant Group by sur Service et la granularité sur Daily. Le graphique montre alors la consommation par service et par jour, ce qui permet d'identifier les pics et les services qui tournent en continu.

#### Qu'est-ce qui coûte le plus cher dans un pipeline data AWS ?

Le calcul, très loin devant le stockage. Les jobs Glue, les clusters Redshift et le scan Athena représentent le gros de la facture, alors qu'un data lake de plusieurs centaines de Go coûte quelques euros par mois. En optimisation, on regarde toujours le compute en premier.

#### Pourquoi mes coûts n'apparaissent pas dans Cost Explorer ?

Parce que les données de facturation remontent avec 24 à 48 heures de décalage. Une ressource créée aujourd'hui n'apparaîtra dans les rapports que dans un ou deux jours, c'est le piège classique quand on vérifie juste après une manipulation.

#### Comment suivre le coût d'un projet précis sur AWS ?

Avec les tags de coûts. On tague chaque ressource (projet, environnement, équipe), on active le tag dans Cost allocation tags, et Cost Explorer permet ensuite de grouper par tag. Attention, les tags ne s'appliquent pas rétroactivement, il faut les poser dès la création des ressources.

#### Comment supprimer proprement toutes ses ressources AWS ?

Dans l'ordre, d'abord ce qui se déclenche automatiquement (schedules, triggers), puis les services de calcul (Redshift, Glue, Lambda), ensuite KMS après avoir remis le bucket en SSE-S3, et enfin S3 en vidant les versions. Une vérification dans Cost Explorer 48 h plus tard confirme qu'il ne reste rien.

#### Comment vider un bucket S3 avec le versioning activé ?

Le bouton Empty de la console ne supprime que les versions courantes. Il faut supprimer aussi les versions non courantes et les delete markers, soit depuis la console en affichant les versions, soit en CLI avec delete-objects et la liste des versions.

###