Aperçu
| Durée | 35 minutes |
| Niveau | Intermédiaire |
| Prérequis | Lab 01 |
Objectifs d’apprentissage
À la fin de ce lab, vous serez capable de :
- Configurer Infracost avec une clé API et les paramètres du projet
- Exécuter
infracost breakdownpour estimer les coûts mensuels d’infrastructure à partir de templates Bicep - Utiliser
infracost diffpour comparer les changements de coûts entre les révisions Bicep - Convertir la sortie JSON d’Infracost en SARIF à l’aide du convertisseur
infracost-to-sarif.py - Comprendre comment le workflow de contrôle de coûts dans les PR bloque les changements coûteux
Exercices
Exercice 5.1 : Configurer Infracost
Vous allez configurer Infracost avec une clé API et examiner la configuration du projet.
-
Inscrivez-vous pour obtenir une clé API Infracost gratuite sur infracost.io si ce n’est pas déjà fait.
-
Configurez la clé API :
infracost configure set api_key YOUR_API_KEY -
Vérifiez la configuration :
infracost configure get api_key -
Ouvrez
src/config/infracost.ymlet examinez la configuration du projet :version: 0.1 projects: - path: infra/ name: finops-demo-appCela indique à Infracost d’analyser le répertoire
infra/de chaque application de démonstration pour les templates Bicep ou Terraform.

[!TIP] Infracost utilise les API de tarification cloud pour estimer les coûts. Il ne nécessite pas de ressources déployées — il analyse les templates IaC et associe les types de ressources aux données de tarification actuelles. Cela le rend idéal pour les vérifications de coûts avant déploiement dans les pipelines CI/CD.
Exercice 5.2 : Détail des coûts — Application 002
Vous allez générer un détail des coûts pour l’application de démonstration avec des ressources surdimensionnées.
-
Créez le répertoire de rapports :
mkdir -p reports -
Exécutez le détail des coûts Infracost pour l’application 002 :
infracost breakdown --path finops-demo-app-002/infra/ --format json --out-file reports/infracost.json -
Affichez le résumé lisible :
infracost breakdown --path finops-demo-app-002/infra/La sortie sous forme de tableau montre chaque ressource, son SKU ou niveau, et le coût mensuel estimé.
- Ouvrez
reports/infracost.jsonet examinez la structure :projects— tableau des chemins IaC analyséstotalMonthlyCost— coût mensuel total estimé pour toutes les ressourcesresources— détails des coûts par ressource avec tarification détaillée
- Notez le coût de l’App Service Plan P3v3. C’est la ressource surdimensionnée que l’application 002 déploie intentionnellement — un plan de niveau premium pour une charge de travail de développement.

[!NOTE] L’application 002 utilise un App Service Plan P3v3 et un stockage Premium. Ce sont des niveaux coûteux destinés aux charges de travail de niveau production. Infracost rend le coût mensuel immédiatement visible pour que vous puissiez prendre des décisions éclairées avant le déploiement.
Exercice 5.3 : Comparaison des coûts
Vous allez modifier un SKU dans le template Bicep de l’application 002 et utiliser infracost diff pour voir l’impact sur les coûts.
-
Ouvrez
finops-demo-app-002/infra/main.bicepdans votre éditeur. -
Trouvez le SKU de l’App Service Plan et changez-le de
P3v3àB1(niveau Basic) :// Before: // sku: { name: 'P3v3', tier: 'PremiumV3' } // After: sku: { name: 'B1', tier: 'Basic' } -
Exécutez
infracost diffpour comparer le coût du template modifié par rapport à la référence :infracost diff --path finops-demo-app-002/infra/ --compare-to reports/infracost.json - Examinez la sortie de la comparaison. Elle montre :
- Les ressources avec un coût augmenté (▲)
- Les ressources avec un coût diminué (▼)
- Le changement mensuel net résultant de la modification
-
La comparaison devrait montrer une réduction significative des coûts en passant de P3v3 à B1 — cela démontre l’importance du dimensionnement correct pour la gouvernance FinOps.
-
Annulez la modification de
main.biceppour ne pas affecter les labs suivants :git checkout finops-demo-app-002/infra/main.bicep

[!IMPORTANT] Annulez toujours les modifications intentionnelles de Bicep après avoir terminé cet exercice. Les applications de démonstration sont conçues avec des violations spécifiques, et les modifier de façon permanente peut affecter les Labs 06 et 07.
Exercice 5.4 : Convertir en SARIF
Vous allez convertir la sortie JSON d’Infracost au format SARIF.
-
Exécutez le convertisseur SARIF :
python src/converters/infracost-to-sarif.py reports/infracost.json reports/infracost.sarif -
Ouvrez le fichier SARIF généré :
cat reports/infracost.sarif - Examinez la structure SARIF :
- Le
tool.driver.nameest défini àinfracost-to-sarif - Chaque ressource avec un coût mensuel supérieur à un seuil est rapportée comme un résultat
- Le
message.textinclut le coût mensuel estimé pour la ressource - Le
physicalLocationpointe vers le fichier Bicep qui définit la ressource
- Le
- Ce fichier SARIF peut être téléversé vers l’onglet Sécurité GitHub aux côtés des résultats PSRule, Checkov et Cloud Custodian pour fournir une vue unifiée des résultats de gouvernance des coûts.

Exercice 5.5 : Examiner le workflow de contrôle de coûts
Vous allez parcourir le workflow GitHub Actions qui bloque les changements d’infrastructure coûteux dans les pull requests.
-
Ouvrez
.github/workflows/finops-cost-gate.ymlet examinez la structure du workflow :name: FinOps Cost Gate on: pull_request: branches: [main] paths: ['infra/**']Le workflow se déclenche sur les pull requests vers
mainqui modifient des fichiers sousinfra/. - Examinez les étapes du workflow :
- Setup Infracost — installe le CLI Infracost avec la clé API depuis les secrets du dépôt
- Generate Infracost baseline — exécute
infracost breakdownpour capturer le coût actuel - Run Infracost diff — compare les changements de la PR par rapport à la référence
- Post PR comment — utilise
infracost comment githubpour ajouter un commentaire de résumé des coûts sur la PR - Convert to SARIF — génère un fichier SARIF à partir de la sortie de la comparaison Infracost
- Upload SARIF — téléverse le fichier SARIF vers l’onglet Sécurité GitHub
-
Notez la commande
infracost comment github:infracost comment github \ --path infracost-output.json \ --repo $ \ --pull-request $ \ --github-token $ \ --behavior updateLe drapeau
--behavior updatemet à jour le commentaire existant au lieu de créer des doublons à chaque push. - Ce workflow crée un contrôle de coûts — les réviseurs peuvent voir l’impact financier des changements d’infrastructure directement dans la PR avant d’approuver.

[!TIP] En production, vous pouvez étendre le contrôle de coûts pour faire échouer la vérification de la PR si les coûts dépassent un seuil. Ajoutez une étape qui lit le
totalMonthlyCostdepuis le JSON Infracost et le compare à une limite budgétaire.
Point de vérification
Avant de continuer, vérifiez :
- Infracost authentifié et retournant des estimations de coûts
- Détail des coûts généré pour au moins 1 application de démonstration
- Avez observé la différence de coûts avec
infracost diffaprès modification d’un SKU - Fichier SARIF généré à partir de la sortie Infracost