AWSCloudFinOpsOptimisation

Optimiser ses coûts AWS : les leviers qui font vraiment la différence

5 mai 2026 · Sphinx-Digital

La facture AWS monte rarement à cause d’un seul gros poste. Elle monte parce que personne n’a nettoyé les snapshots de l’année dernière, parce que les instances sont surdimensionnées par précaution, et parce que personne n’a activé les Savings Plans. Les leviers les plus efficaces sont souvent les plus simples.

Savings Plans et Reserved Instances : -30 à -72%

Sans engagement, vous payez le tarif On-Demand. Avec un engagement d’utilisation sur 1 ou 3 ans, les réductions sont massives.

Savings Plans Compute — réduction garantie si vous vous engagez à dépenser X$/heure en compute EC2, Lambda et Fargate. Flexible entre régions, tailles d’instances et OS.

1 an, no upfront : -30 à -40% vs On-Demand
3 ans, no upfront : -50 à -60% vs On-Demand
3 ans, all upfront : jusqu'à -72% vs On-Demand

La règle : si vous avez une baseline stable (des serveurs qui tournent en permanence), couvrez-la avec des Savings Plans. Gardez On-Demand pour les pics.

Instances Spot : -70-90% pour les workloads tolérants aux interruptions

Les instances Spot utilisent la capacité EC2 non utilisée — en contrepartie, AWS peut les interrompre avec 2 minutes de préavis.

# Workloads adaptés aux instances Spot :
# - Workers de CI/CD
# - Jobs de traitement de données (Spark, batch)
# - Nodes Kubernetes pour les workloads stateless
# - Rendering vidéo/image

# Dans EKS, un node group Spot
resource "aws_eks_node_group" "spot" {
  capacity_type  = "SPOT"
  instance_types = ["m5.large", "m5a.large", "m4.large"]  # plusieurs types = moins d'interruptions
}

Rightsizing avec AWS Compute Optimizer

Compute Optimizer analyse l’utilisation réelle de vos instances et recommande le type optimal.

# Via l'AWS CLI
aws compute-optimizer get-ec2-instance-recommendations   --region eu-west-1   --query 'instanceRecommendations[?finding==`OVER_PROVISIONED`].[instanceArn, currentInstanceType, recommendationOptions[0].instanceType, recommendationOptions[0].projectedUtilizationMetrics[0].upperBoundValue]'   --output table

Typiquement, 30-50% des instances en production sont surdimensionnées. Une instance m5.xlarge utilisée à 15% de CPU peut être descendue en m5.large sans impact visible.

Nettoyage des ressources orphelines

Les ressources orphelines s’accumulent — snapshots EBS d’instances terminées, Elastic IPs non attachées, Load Balancers vides, volumes EBS détachés.

# Elastic IPs non attachées (0.005$/heure = 3.65$/mois chacune)
aws ec2 describe-addresses   --query "Addresses[?AssociationId==null].[PublicIp,AllocationId]"   --output table

# Volumes EBS détachés
aws ec2 describe-volumes   --filters "Name=status,Values=available"   --query "Volumes[*].[VolumeId,Size,State,CreateTime]"   --output table

# Snapshots de plus de 90 jours
aws ec2 describe-snapshots --owner-ids self   --query "Snapshots[?StartTime<='$(date -d '90 days ago' +%Y-%m-%d)'].[SnapshotId,StartTime,VolumeSize]"   --output table

S3 : Intelligent-Tiering et lifecycle policies

resource "aws_s3_bucket_lifecycle_configuration" "logs" {
  bucket = aws_s3_bucket.logs.id

  rule {
    id     = "transition-old-logs"
    status = "Enabled"

    transition {
      days          = 30
      storage_class = "STANDARD_IA"   # -40% vs Standard après 30 jours
    }
    transition {
      days          = 90
      storage_class = "GLACIER"       # -80% vs Standard après 90 jours
    }
    expiration {
      days = 365   # supprimer après 1 an
    }
  }
}

Notre formation AWS couvre la gestion des coûts et le FinOps avec des ateliers sur des comptes réels.