Skip to content
Learni
Voir tous les tutoriels
Cloud Computing

Comment optimiser l'allocation des coûts cloud en 2026

18 minADVANCED
Read in English

Introduction

L'allocation des coûts cloud est devenue critique pour les entreprises multi-comptes. Une mauvaise visibilité conduit à des surcoûts de 30 à 40 %. Ce tutoriel advanced vous guide dans la mise en place d'un système complet : tagging stratégique, automatisation via AWS SDK et reporting en temps réel. Vous apprendrez à associer chaque ressource à des centres de coûts, projets ou équipes avec une précision granulaire. L'approche combine infrastructure as code et scripts analytiques pour une gouvernance financière robuste.

Prérequis

  • Compte AWS avec permissions Cost Explorer et Billing
  • Terraform 1.7+
  • Python 3.11 avec boto3
  • Connaissances avancées en tagging et IAM
  • Node.js optionnel pour dashboards

Configuration des tags de base

tags.tf
variable "cost_center" {
  type = string
}

locals {
  common_tags = {
    Environment   = "production"
    CostCenter    = var.cost_center
    Project       = "api-v2"
    Owner         = "finance-team"
    CreatedBy     = "terraform"
    AllocationKey = "${var.cost_center}-${var.environment}"
  }
}

Ce module Terraform définit des tags standards obligatoires pour l'allocation. Chaque ressource héritera de ces tags permettant un filtrage précis dans Cost Explorer.

Déploiement ressources tagguées

main.tf
resource "aws_lambda_function" "api_handler" {
  function_name = "cost-allocated-api"
  role          = aws_iam_role.lambda_role.arn
  handler       = "index.handler"
  runtime       = "python3.11"

  tags = merge(local.common_tags, {
    Service = "api"
  })
}

Application concrète des tags sur une Lambda. Les tags AllocationKey permettent de regrouper les coûts par centre de coût dans les rapports mensuels.

Script d'allocation avancée

cost_allocator.py
import boto3
from datetime import datetime, timedelta

def allocate_costs(cost_center: str):
    ce = boto3.client('ce')
    end = datetime.now().strftime('%Y-%m-%d')
    start = (datetime.now() - timedelta(days=30)).strftime('%Y-%m-%d')
    
    response = ce.get_cost_and_usage(
        TimePeriod={'Start': start, 'End': end},
        Granularity='DAILY',
        Metrics=['BlendedCost'],
        Filter={'Tags': {'Key': 'CostCenter', 'Values': [cost_center]}},
        GroupBy=[{'Type': 'TAG', 'Key': 'Project'}]
    )
    return response['ResultsByTime']

Script Python fonctionnel qui interroge Cost Explorer et filtre par CostCenter. Retourne les coûts quotidiens ventilés par projet pour reporting automatisé.

Génération rapport CSV

report_generator.py
import csv
from cost_allocator import allocate_costs

def export_to_csv(cost_center: str, filename: str):
    data = allocate_costs(cost_center)
    with open(filename, 'w', newline='') as f:
        writer = csv.writer(f)
        writer.writerow(['Date', 'Project', 'Cost'])
        for day in data:
            for group in day['Groups']:
                writer.writerow([
                    day['TimePeriod']['Start'],
                    group['Keys'][0],
                    group['Metrics']['BlendedCost']['Amount']
                ])

Fonction complète qui exporte les résultats en CSV. Peut être planifiée via EventBridge pour des rapports hebdomadaires automatiques.

Configuration IAM minimale

cost-reporting-policy.json
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ce:GetCostAndUsage",
        "ce:GetCostAndUsageWithResources",
        "ce:GetTags"
      ],
      "Resource": "*"
    }
  ]
}

Politique IAM minimale permettant aux scripts d'accéder uniquement aux données de coûts sans droits de modification.

Bonnes pratiques

  • Toujours imposer les tags AllocationKey et CostCenter via SCP
  • Utiliser des tags techniques et métier distincts
  • Automatiser la validation des tags avec Lambda
  • Exporter les rapports vers S3 et Athena pour requêtes SQL
  • Revoir mensuellement les règles d'allocation avec les équipes finance

Erreurs courantes à éviter

  • Oublier d'appliquer les tags sur les ressources créées manuellement
  • Utiliser des valeurs de tags incohérentes entre environnements
  • Ignorer les coûts des services partagés (support, management)
  • Ne pas versionner les scripts d'allocation

Pour aller plus loin

Approfondissez ces concepts avec nos formations dédiées au FinOps et à l'optimisation cloud : https://learni-group.com/formations