couts s3 qui explosent pour notre infra serverless

Posté par paris-christophe le 02/01/2025
RÉSOLU

paris-christophe

Membre depuis le 01/08/2019

actif

hello la commu finops

on a mis en place une infra serverless complète avec des lambdas qui génèrent pas mal de data stockée sur s3. ça tourne depuis quelques mois et les coûts s3 sont juste incroyables genre 5k$ par mois. on stocke que des petits fichiers json et images. j'ai vérifié les metrics et on a quelques To stockés mais ça justifie pas un tel coût. des idées de ce qui pourrait plomber le budget s3 ?


{
  "bucket_name": "my-serverless-data",
  "region": "eu-west-1",
  "storage_class": "STANDARD",
  "estimated_size_tb": 2.5,
  "estimated_objects_count_billions": 1.2
}

Commentaires

antoine-raymond

Membre depuis le 17/10/2024

actif secouriste

salut

1.2 milliard d'objets pour 2.5To ça fait des objets super petits. s3 te facture par requête (get put list delete) et par volume de stockage. les objets petits sont plus coûteux en requêtes. et si tu es en `STANDARD` c'est le plus cher pour les accès fréquents. tu devrais voir si tu peux archiver en `IA` ou `Glacier` pour les objets moins accédés

paris-christophe

Membre depuis le 01/08/2019

actif

oui on a pas mal de petits objets c'est clair. mais on doit les accéder régulièrement pendant les 30-60 premiers jours. après c'est plus rare. l'archivage c'est une piste. mais ça explique pas tout le coût de dingue

guichard-charles

Membre depuis le 03/07/2019

actif

t'as le versioning d'activé sur ton bucket ? si oui chaque modification d'un objet crée une nouvelle version et s3 te facture pour toutes les versions stockées. si tes lambdas écrivent beaucoup sur les mêmes objets ça peut faire exploser le coût de stockage sans que la taille "logique" augmente tant que ça

vrenaud

Membre depuis le 20/07/2019

actif secouriste

et le data transfer out ? si tes users ou tes services accèdent aux objets s3 depuis l'extérieur d'aws ou d'une autre région ça coûte cher en egress. regarde les metrics cloudwatch pour `bytesdownloaded` et `bytesuploaded` et filtre par `region` et `apiname`

adelaide03

Membre depuis le 06/12/2024

actif secouriste

t'as pas de replication cross-region d'activée sur le bucket ? ça double le stockage et les coûts de transfert. et les s3 lifecycle rules tu les as bien configurées pour passer les vieux objets en `IA` ou les supprimer ? sinon tu paies des objets que personne ne lit

paris-christophe

Membre depuis le 01/08/2019

actif

ha le versioning... j'avais pas pensé. oui il est activé. et nos lambdas font pas mal d'updates d'objets existants pour ajouter des métadonnées. ça doit être ça une grosse partie du problème. pour la réplication non j'ai pas ça. les lifecycle rules sont en place mais ptete pas assez agressives

antoine-raymond

Membre depuis le 17/10/2024

actif secouriste

si le versioning est actif et que tu update beaucoup le même objet ça coûte cher. tu peux aussi configurer une lifecycle rule pour purger les anciennes versions d'objets après x jours ou x versions. ça réduira drastiquement le coût de stockage lié au versioning

guichard-charles

Membre depuis le 03/07/2019

actif

et même si tu as beaucoup de petits objets qui sont accédés souvent les 30-60 premiers jours tu pourrais potentiellement les passer en `intelligent-tiering`. s3 s'occupe de bouger les objets entre `standard` et `ia` en fonction des patterns d'accès. ça peut faire des économies substantielles sans effort

vrenaud

Membre depuis le 20/07/2019

actif secouriste

check aussi les `list` requests. si ton app ou des services tiers (backup monitoring) font des `list` récurrents sur des buckets avec des milliards d'objets ça peut aussi plomber les coûts de requêtes. c'est souvent sous-estimé

paris-christophe

Membre depuis le 01/08/2019

actif

ok le versioning c'est clair c'est une piste chaude. j'ai vu des objets avec 200 versions ! je vais mettre une lifecycle rule pour ça. et `intelligent-tiering` c'est une super idée pour les objets récents. pour les `list` requests je vais investiguer aussi

paris-christophe

Membre depuis le 01/08/2019

actif

alors verdict : le versioning était bien le coupable numéro 1. j'ai mis une règle de cycle de vie pour ne garder que les 5 dernières versions après 30 jours et ça a déjà coupé la facture de moitié. en plus j'ai activé `intelligent-tiering` pour les nouveaux objets. les coûts de list étaient aussi un peu élevés mais moins critiques. merci à tous pour les excellents tips !

Laisser une réponse

Vous devez être connecté pour poster un message !

Rejoindre la communauté

Recevoir les derniers articles gratuitement en créant un compte !

S'inscrire