FinOps
Ressources AWS inutilisées : la checklist pour les trouver
Les ressources AWS inutilisées les plus fréquentes sont les volumes EBS non attachés, les snapshots dont le volume a disparu, les adresses IPv4 publiques sans usage, les instances arrêtées qui gardent leurs disques, les load balancers et NAT Gateways sans trafic, et les journaux sans rétention. Cette checklist donne, pour chaque type, la commande AWS CLI qui la détecte et ce qu'elle coûte.
En résumé
- Une ressource inutilisée continue d'être facturée : un volume détaché au Go, une IP publique à l'heure, une NAT Gateway à l'heure même sans trafic.
- Le ménage se fait sans toucher à la production, mais toujours dans cet ordre : identifier le propriétaire, sauvegarder si besoin, attendre, supprimer.
- Le rightsizing et le passage de gp2 à gp3 sont des ressources « mal utilisées » plutôt qu'inutilisées : ils figurent dans la même checklist parce qu'ils se détectent de la même façon.
Ce que coûte chaque ressource oubliée
Prix publics à la demande en eu-west-3 (Paris), relevés dans l'API AWS Price List le 23 octobre 2026, en dollars, sur la base de 730 heures par mois.
| Ressource | Ce qui est facturé | Exemple de gain mensuel |
|---|---|---|
| Volume EBS non attaché | 0,0928 USD/Go-mois en gp3, 0,116 USD en gp2 | 46,40 USD pour un volume gp3 de 500 Go |
| Snapshot EBS ancien ou orphelin | 0,053 USD/Go-mois (0,01325 USD en archive) | Jusqu'à 53 USD par To supprimé, 39,75 USD par To archivé |
| Adresse IPv4 publique | 0,005 USD/h, attachée ou non | 3,65 USD par adresse |
| Instance EC2 arrêtée | Ses volumes EBS et son adresse IP élastique | 12,93 USD pour 100 Go gp3 et une IP élastique |
| Application Load Balancer sans trafic | 0,02646 USD/h, plus les LCU consommées | 19,32 USD par load balancer |
| NAT Gateway sans trafic | 0,05 USD/h, plus 0,05 USD/Go traité | 36,50 USD par NAT Gateway |
| Endpoint VPC Interface sans trafic | 0,011 USD/h par zone de disponibilité | 24,09 USD pour un endpoint sur 3 zones |
| Journaux CloudWatch sans rétention | 0,0315 USD/Go-mois stocké | 31,50 USD par To de journaux supprimés |
| Volume gp2 (au lieu de gp3) | 20 % de plus que gp3 | 23,20 USD par To migré |
| Instance surdimensionnée | La taille supérieure | 85,85 USD pour une m7i.xlarge ramenée en m7i.large |
Stockage : volumes, snapshots, AMI
- Volumes EBS non attachés (statut
available) : souvent restés après la suppression d'une instance sans l'option de suppression des volumes. - Snapshots orphelins : leur volume source n'existe plus. Les snapshots étant incrémentaux, la place libérée peut être inférieure à la taille affichée, mais un snapshot complet ancien libère presque tout.
- Snapshots de plus de six mois : à supprimer s'ils ne sont rattachés à aucune politique de sauvegarde, ou à archiver (75 % moins cher, 90 jours minimum, frais de restauration).
- AMI de plus d'un an : désenregistrer une AMI ne supprime pas ses snapshots par défaut ; ils restent facturés tant qu'ils existent.
- Volumes gp2 : migration vers gp3 à chaud, sans arrêt. Au-delà de 1 To, provisionner sur gp3 les IOPS dont le volume disposait en gp2 (3 IOPS par Go).
# Volumes non attachés
aws ec2 describe-volumes --filters Name=status,Values=available \
--query 'Volumes[].[VolumeId,Size,VolumeType,CreateTime]' --output table
# Volumes cités par un snapshot mais qui n'existent plus (snapshots orphelins)
comm -23 \
<(aws ec2 describe-snapshots --owner-ids self --query 'Snapshots[].VolumeId' --output text | tr '\t' '\n' | sort -u) \
<(aws ec2 describe-volumes --query 'Volumes[].VolumeId' --output text | tr '\t' '\n' | sort -u)
# Snapshots antérieurs à une date
aws ec2 describe-snapshots --owner-ids self \
--query "Snapshots[?StartTime<='2026-04-24'].[SnapshotId,VolumeSize,StartTime,Description]" --output table
# Archiver un snapshot plutôt que le supprimer
aws ec2 modify-snapshot-tier --snapshot-id snap-0123456789abcdef0 --storage-tier archive
# AMI de plus d'un an
aws ec2 describe-images --owners self \
--query "Images[?CreationDate<='2025-10-24'].[ImageId,Name,CreationDate]" --output tableRéseau : adresses IP, load balancers, NAT, endpoints
- Adresses IP élastiques non associées, et plus largement toute adresse IPv4 publique qui n'a pas besoin de l'être : depuis février 2024, AWS les facture toutes, en service ou non.
- Load balancers sans trafic : aucune requête sur 30 jours ou aucune cible enregistrée.
- NAT Gateways sans trafic : un environnement supprimé laisse souvent sa NAT, facturée à l'heure. Le détail des coûts de NAT est dans le coût d'une NAT Gateway AWS.
- Endpoints VPC Interface sans trafic, ou déployés sur plus de zones que les charges qui les utilisent.
# IP élastiques non associées
aws ec2 describe-addresses \
--query 'Addresses[?AssociationId==`null`].[PublicIp,AllocationId]' --output table
# Toutes les interfaces qui portent une IPv4 publique
aws ec2 describe-network-interfaces \
--query 'NetworkInterfaces[?Association.PublicIp].[NetworkInterfaceId,Association.PublicIp,InterfaceType]' --output table
# Requêtes reçues par un ALB sur 30 jours
aws cloudwatch get-metric-statistics --namespace AWS/ApplicationELB --metric-name RequestCount \
--dimensions Name=LoadBalancer,Value=app/mon-alb/0123456789abcdef \
--start-time 2026-09-24T00:00:00Z --end-time 2026-10-24T00:00:00Z \
--period 2592000 --statistics Sum
# Octets sortis par une NAT Gateway sur 30 jours
aws cloudwatch get-metric-statistics --namespace AWS/NATGateway --metric-name BytesOutToDestination \
--dimensions Name=NatGatewayId,Value=nat-0123456789abcdef0 \
--start-time 2026-09-24T00:00:00Z --end-time 2026-10-24T00:00:00Z \
--period 2592000 --statistics SumCalcul : instances arrêtées, surdimensionnées, allumées la nuit
- Instances arrêtées depuis longtemps : l'instance n'est plus facturée, ses volumes et son IP élastique le sont. Une image (AMI) puis la résiliation libèrent tout.
- Instances surdimensionnées : Compute Optimizer les classe
Overprovisionedà partir des métriques des 14 derniers jours. Sans l'agent CloudWatch, la mémoire n'est pas prise en compte. - Hors production allumé en continu : à 12 heures par jour ouvré, une instance passe de 730 à environ 260 heures par mois. Une instance RDS arrêtée redémarre seule au bout de sept jours.
# Instances arrêtées, avec la date d'arrêt
aws ec2 describe-instances --filters Name=instance-state-name,Values=stopped \
--query 'Reservations[].Instances[].[InstanceId,InstanceType,StateTransitionReason]' --output table
# Instances surdimensionnées selon Compute Optimizer
aws compute-optimizer get-ec2-instance-recommendations \
--query 'instanceRecommendations[?finding==`OVER_PROVISIONED`].[instanceArn,currentInstanceType,recommendationOptions[0].instanceType]' \
--output tableJournaux et S3 : ce qui grossit sans bruit
- Groupes de journaux CloudWatch sans rétention : chaque giga ingéré reste stocké indéfiniment.
- Téléversements S3 multiparties inachevés : les parties déjà envoyées sont stockées et facturées, sans apparaître comme objets. Une règle de cycle de vie
AbortIncompleteMultipartUploadles purge. - Objets S3 rarement lus en classe Standard : Standard-IA coûte 0,0131 USD/Go-mois et Glacier Instant Retrieval 0,005 USD, contre 0,024 USD en Standard.
# Groupes de journaux sans rétention
aws logs describe-log-groups \
--query 'logGroups[?retentionInDays==`null`].[logGroupName,storedBytes]' --output table
# Téléversements multiparties en cours sur un bucket
aws s3api list-multipart-uploads --bucket mon-bucket \
--query 'Uploads[].[Key,Initiated]' --output tableSupprimer sans casser : la méthode
- Identifier le propriétaire par les étiquettes, CloudTrail (qui a créé la ressource) ou le nom. Sans propriétaire, étiqueter la ressource « à supprimer le JJ/MM » et prévenir les équipes.
- Sauvegarder ce qui est irremplaçable : snapshot d'un volume, AMI d'une instance arrêtée. Un snapshot archivé coûte sept fois moins qu'un volume gp3.
- Attendre une ou deux semaines : une ressource réclamée se voit vite.
- Supprimer, puis vérifier la baisse dans Cost Explorer le mois suivant.
- Empêcher le retour : étiquette de propriétaire obligatoire, budget par équipe, rétention par défaut sur les journaux. Les autres leviers sont dans le guide pour réduire sa facture AWS.
Ce que l'audit FinOps détecte automatiquement
L'audit FinOps AWS exécute ces recherches en lecture seule, dans chaque région choisie : volumes EBS non attachés, IP élastiques non associées, snapshots de plus de six mois, AMI de plus d'un an, groupes de journaux sans rétention, endpoints VPC sans trafic sur 30 jours. Il y ajoute les recommandations de rightsizing de Compute Optimizer et les contrôles d'optimisation des coûts de Trusted Advisor.
Chaque ressource est citée par son identifiant, avec le gain mensuel et la commande pour agir. Le domaine résilience signale en parallèle les snapshots et sauvegardes à préserver, pour ne pas supprimer la seule copie d'une base. L'audit ne supprime rien : il recommande, vous décidez.
Ressources AWS inutilisées : questions fréquentes
Comment trouver les ressources inutilisées sur AWS ?
Avec les commandes describe de l'AWS CLI, région par région : volumes au statut available, adresses élastiques sans association, snapshots dont le volume n'existe plus, groupes de journaux sans rétention. Trusted Advisor et Compute Optimizer complètent avec les instances et volumes sous-utilisés.
Une instance EC2 arrêtée est-elle facturée ?
L'instance elle-même ne l'est plus, mais ses volumes EBS et son adresse IP élastique continuent d'être facturés. Pour tout libérer, créez une image (AMI) si besoin, puis résiliez l'instance.
Supprimer un snapshot libère-t-il toute sa taille ?
Pas toujours. Les snapshots EBS sont incrémentaux : seuls les blocs qui ne sont référencés par aucun autre snapshot sont supprimés. La taille affichée est donc un maximum.
Passer de gp2 à gp3 demande-t-il un arrêt ?
Non. La modification du type de volume se fait à chaud. gp3 coûte 20 % de moins et inclut 3 000 IOPS et 125 Mio/s ; pour un volume gp2 de plus de 1 To, provisionnez les IOPS supplémentaires pour garder les mêmes performances.
Faut-il vérifier toutes les régions ?
Oui. Les ressources oubliées se trouvent souvent dans une région utilisée pour un test, puis abandonnée. Les commandes de cette page sont régionales : répétez-les avec l'option --region pour chaque région active.
Où en est votre compte AWS ?
Dix questions, trois minutes, sans accès à votre compte : un score sécurité, un score FinOps et l'article à lire pour chacun de vos trois points les plus faibles. Vos réponses restent dans votre navigateur.
Prêt à auditer votre compte AWS ?
Souscrivez sur AWS Marketplace, déployez le rôle en lecture seule et recevez vos rapports dans l'heure.