9 commentaires
yo des millions de petits fichiers c'est la mort des requêtes PUT. il faut que tes applis ou un agent intermédiaire fassent du batching. au lieu de 1 fichier par log, tu collectes 100 ou 1000 logs et tu les mets dans un seul fichier zip ou gzip et tu fais un PUT. ça réduira drastiquement ton nombre de PUTs
exact le batching c'est clé. sinon t'as des policies de lifecycle sur ton bucket ? si tes logs ne sont consultés que les premières semaines, tu peux les passer en S3 Infrequent Access (IA) après 30 jours et en Glacier après 60 ou 90. ça ne réduira pas les PUTs mais ça baissera le coût de stockage global
le batching c'est un changement d'architecture côté app ce que j'aimerais éviter pour l'instant. les cycles policies sont en place pour passer en ia et glacier deep archive. mais les put costs sont le problème numéro 1. j'ai vu S3 intelligent-tiering, ça aide ou c'est juste pour le stockage ?
intelligent-tiering est pour le stockage oui ça va pas t'aider sur les puts. ton problème c'est le nombre de requêtes. si tu ne veux pas changer les apps directement tu peux mettre un service intermédiaire genre kinesis firehose. tu envoies tous tes logs à firehose et lui il batch et les écrit sur s3 pour toi. ça coûte mais sûrement moins que des millions de puts direct
s3 transfer acceleration c'est pour la vitesse d'upload pas pour le coût des requêtes. ça ne t'aidera pas. firehose est la solution aws managée la plus simple pour ton use-case de batching. sinon c'est un agent type fluentd/fluentbit sur chaque instance qui collecte et push des fichiers plus gros.
Laisser une réponse
Vous devez être connecté pour poster un message !
putain ma facture s3 a triplé ce mois-ci et ça vient des requêtes PUT. on stocke des logs d'applis dans un bucket s3. on a des milliers de micro-services qui écrivent des millions de petits fichiers de logs par jour. je suis un peu coincé, comment je peux réduire ça sans changer d'architecture de logs ?