Anticipe ta facture AWS avec Infracost, arrête les surprises
Vois ce que tes changements Terraform coûtent avant de les appliquer. Fini les factures surprises de 10k€.
Tu ajoutes une instance RDS dans Terraform. Le mois suivant AWS te facture 847€. T’avais oublié de vérifier le type d’instance!
Tu passes de gp2 à gp3 pour économiser. Sauf que tu t’es trompé dans les paramètres d’IOPS et maintenant ça coûte plus cher
Un collègue déploie une NAT Gateway pour des tests. Elle reste up 3 mois. Ça fait 300€ de gaspillés!
Infracost te montre ce que tes changements coûtent avant de les appliquer. Direct dans ton terminal, direct dans tes pull requests

La facture AWS surprise dont personne parle
Tu sais qu’elle arrive. Tu fais des changements d’infra, t’attends la facture, tu croises les doigts pour que ça passe
J’ai vu des équipes passer 20 minutes en réunion à débattre s’il faut ajouter un load balancer. Personne sait ce que ça coûte. Quelqu’un dit ‘50€ par mois?’ C’est 200€ en vrai!
Le classique: tu spins des ressources pour une démo, tu oublies, tu les redécouvres 6 mois plus tard quand quelqu’un lit enfin le Cost Explorer
Le FinOps existe comme discipline parce que les factures cloud sont impossibles à prédire. La solution c’est pas d’embaucher une équipe FinOps, c’est de mettre la visibilité des coûts là où ça compte: dans le code review
Ce qu’Infracost fait vraiment
Tu écris du Terraform. Infracost le lit et te dit combien ça coûte
# Installation
curl -fsSL https://raw.githubusercontent.com/infracost/infracost/master/scripts/install.sh | sh
# Affiche le coût du plan actuel
infracost breakdown --path . Le résultat ressemble à ça:
Project: my-infrastructure
Name Monthly Qty Unit Monthly Cost
aws_instance.web
├─ Instance usage (Linux/UNIX, on-demand, t3.large) 730 hours $60.74
└─ root_block_device
└─ Storage (general purpose SSD, gp3) 50 GB $4.00
aws_lb.main
├─ Application load balancer 730 hours $16.43
└─ Load balancer capacity units $5.84
OVERALL TOTAL $87.01 Pas de devinettes. Pas de ‘laisse-moi checker la page de pricing.’ Juste des chiffres!
Le vrai pouvoir: le diff entre l’infra actuelle et celle proposée
infracost diff --path . --compare-to main Te montre exactement ce que ta PR va ajouter à la facture mensuelle. J’ai chopé une erreur à 400€/mois parce que quelqu’un avait sélectionné la mauvaise classe d’instance RDS
Dans la CI/CD, là où ça doit être
Chaque PR Terraform reçoit un commentaire Infracost qui montre l’impact sur le budget
# .github/workflows/infracost.yml
name: Infracost
on: [pull_request]
jobs:
infracost:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: infracost/actions/setup@v2
with:
api-key: ${{ secrets.INFRACOST_API_KEY }}
- run: infracost breakdown --path . --format json --out-file /tmp/infracost.json
- uses: infracost/actions/comment@v1
with:
path: /tmp/infracost.json Les commentaires de PR ressemblent à ça:
💰 Infracost estimate: le coût mensuel va augmenter de 245€ 📈
+ aws_rds_cluster.postgres
+215€ instance db.r5.large
+30€ stockage 500GB
~ aws_instance.api
-61€ t3.medium -> t3.large
+61€
Total: 2847€ -> 3092€ (+245€/mois) La personne qui review la PR voit ça. Elle demande ‘on a vraiment besoin de r5.large?’ En fait r5.xlarge était une typo. On corrige avant de merger!
C’est ça le FinOps. Pas des spreadsheets et des reviews trimestrielles. La visibilité des coûts dans le workflow où les changements se font!
Setup réel pour les projets clients
J’ajoute ça dans tous les repos Terraform de mes clients
D’abord, tu récupères une clé API chez Infracost (gratuit pour l’open source, ils ont un free tier pour les repos privés aussi)
Tu l’ajoutes dans les secrets GitHub comme INFRACOST_API_KEY
Tu crées le fichier workflow. Tu le configures pour tourner sur les PRs vers main
Résultat: chaque changement d’infra montre combien ça coûte. Pas de surprises
Un client ajoutait des clusters Elasticache dans tous les environnements. Dev, staging, prod, et trois failovers régionaux différents. Infracost a montré 1200€/mois. On est passés à Redis sur EC2 pour le non-prod. Réduit à 400€
Ce que ça attrape que tu rates
Mauvais types d’instance: Tu tapes t3.2xlarge au lieu de t3.large. Infracost montre +800€/mois. Tu corriges avant d’apply
Ressources oubliées: Cette base de test que t’as créée y’a 3 mois? Toujours là. Toujours à 215€/mois. Infracost breakdown te montre tout
NAT Gateway partout: Chaque VPC a une NAT Gateway. C’est 32€/mois par AZ. Multi-AZ sur 3 environnements? 288€/mois pour un accès internet dont t’as peut-être pas besoin
Stockage pas optimisé: T’utilises gp2 au lieu de gp3 pour les EBS. Infracost montre la différence. Tu switch et tu économises 20%
Load balancers pour une instance: T’as créé un ALB pour un seul container. C’est 16€/mois + les charges LCU. Utilise juste un target group ou l’accès direct à l’instance pour le dev
Marche avec Terragrunt aussi
Ça fonctionne nickel avec Terragrunt. Tu le lances dans chaque répertoire de module:
# root.hcl peut pas estimer, mais les modules individuels marchent
cd dev/vpc
infracost breakdown --path .
cd ../database
infracost breakdown --path . Ou tu utilises infracost breakdown --config-file infracost.yml avec une config:
version: 0.1
projects:
- path: dev/vpc
- path: dev/database
- path: dev/app Ça montre l’estimation combinée de tous les modules
J’ai ça dans un Makefile: make cost lance Infracost sur tous les environnements et montre le total
Quand ça vaut le coup
N’importe quelle équipe qui fait tourner Terraform en prod. Si ta facture cloud mensuelle dépasse 1000€, ça se rentabilise immédiatement
Particulièrement utile quand:
- Plusieurs personnes font des changements d’infra
- T’as des juniors qui apprennent Terraform
- T’as déjà eu des surprises sur les factures
- Tu veux des reviews de coût intégrées dans ton process
Pas la peine si tu tournes une seule instance EC2 qui change jamais. Le coût est évident
La discipline FinOps que personne veut
Le FinOps c’est des spreadsheets, des politiques de tagging, des reviews trimestrielles, et quelqu’un qui te dit de rightsizer tes instances 6 mois après les avoir créées
C’est terrible. Personne veut une réunion de plus sur les coûts cloud
Le vrai FinOps: montrer les coûts au moment où se prennent les décisions. Dans la PR, avant le merge, quand tu peux encore changer sans redéployer
Infracost fait ça. Ça remplace pas le monitoring des coûts, mais ça prévient les erreurs qui rendent le monitoring nécessaire
Une erreur à 500€ choppée en code review coûte 0€. La même erreur choppée dans la facture du mois suivant coûte 500€ plus le temps de la corriger
Commencer
Installe-le:
# Linux
curl -fsSL https://raw.githubusercontent.com/infracost/infracost/master/scripts/install.sh | sh
# macOS
brew install infracost
# Arch
yay -S infracost Récupère une clé API:
infracost auth login Lance-le sur ton Terraform:
cd ton-projet-terraform
infracost breakdown --path . Tu vois les chiffres. Tu l’ajoutes dans la CI. Tu arrêtes de deviner ce que les trucs coûtent
J’ai passé 6 mois à dire aux clients ‘on devrait checker ce que ça coûte.’ Maintenant Infracost leur montre. Ils voient le chiffre, ils prennent des décisions éclairées, personne se fait surprendre par la facture
La visibilité des coûts devrait être automatique, pas un truc que tu dois penser à vérifier. Infracost rend ça automatique
La réalité est souvent plus nuancée. Moi, la nuance ça m'ennuie. Je préfère la clarté.