Présentation

En plus de ses avantages pour la performance, la sécurité et la disponibilité de votre application Web, CloudFront peut être utilisé pour réduire les coûts des applications Web. Tout d'abord, le modèle de tarification de CloudFront pourrait réduire vos coûts d'origine. Ensuite, vous pouvez configurer votre CloudFront et concevoir votre architecture applicative afin de réduire ses coûts. Pour obtenir des conseils plus généraux sur l'optimisation des coûts à l'aide des services AWS, consultez le Pilier d'optimisation des coûts du cadre AWS Well-Architected. Pour suivre et comprendre vos coûts, utilisez l'Explorateur de coûts AWS et AWS Buggets.

Tarification de CloudFront

Le modèle de tarification de CloudFront inclut plusieurs dimensions, les deux principales étant les suivantes :

  • Le transfert de données régional (DTO) vers Internet, qui représente le nombre de Go fournis par CloudFront aux utilisateurs d'Internet. Notez que cette tarification dépend de la région des utilisateurs, qu'elle est mesurée en gigaoctets binaires (c'est-à-dire 1 Go = 1 024 Mo) et qu'elle inclut uniquement la charge utile HTTP (à l'exclusion du transfert de données TLS handshake).
  • Les frais de demande, qui tiennent compte du nombre de demandes HTTP(S) traitées par CloudFront. Cela dépend également de la région des utilisateurs.

Par défaut, CloudFront utilise l'ensemble de son réseau pour livrer du contenu afin d'optimiser les performances. Envisagez de configurer les options de classe tarifaire dans CloudFront si vous êtes prêt à trouver un compromis en ce qui concerne les frais de livraison.

CloudFront propose un niveau gratuit permanent, qui inclut chaque mois 1 To de DTO et 10 millions de demandes HTTP(S). Si vous utilisez AWS WAF en combinaison avec CloudFront, envisagez de souscrire au forfait sécurité CloudFront afin d'économiser jusqu'à 30 % sur les frais de CloudFront. Pour les volumes plus importants (10 To et plus), contactez-nous pour obtenir des réductions supplémentaires en échange d'un engagement financier plus élevé, en signant un contrat de tarification privé. Notez que la réduction que vous pouvez obtenir est plus importante lorsque votre trafic global a une taille moyenne d'objets HTTP livrés plus élevée. Par conséquent, il est recommandé d'utiliser CloudFront pour plusieurs charges de travail (livraison d'API et de fichiers statiques) afin d'augmenter la réduction globale que vous pouvez obtenir dans le cadre d'un contrat de tarification privé.

Il est important de noter que lorsqu'il est utilisé avec une origine basée sur AWS, le DTO de CloudFront remplace le DTO de l'origine. À ce titre, vous ne payez pas le Data Transfer Out (DTO) de l'origine.

Enfin, examinez et optimisez votre utilisation des fonctionnalités facultatives de CloudFront, qui peuvent générer des coûts supplémentaires, tels que l'invalidation de contenu.

Optimisation du coût des invalidations dans CloudFront

Selon la tarification de CloudFront, vous pouvez utiliser 1 000 chemins pour l'invalidation chaque mois sans frais supplémentaires. Au-delà, le tarif est de 0,005 USD par chemin demandé pour l'invalidation. Un chemin figurant dans votre demande d'invalidation représente l'URL (ou plusieurs URL si le chemin contient un caractère générique) des objets que vous souhaitez invalider depuis le cache de CloudFront.

Suivez les conseils suivants pour optimiser le coût des invalidations à l'aide de CloudFront :

  • Utilisez les mécanismes de contrôle du cache HTTP (par exemple, l'en-tête Cache-Control, la gestion des versions d'URL, les demandes conditionnelles) par défaut, et préférez les invalidations basées sur le CDN pour les scénarios de bris de glace. Pour plus de détails, consultez ce blog.
  • Utilisez un caractère générique dans vos invalidations, le cas échéant, pour invalider plusieurs fichiers avec une seule demande d'invalidation. Par exemple, utilisez /stories/sports/worldcup* pour invalider tous les articles liés à la coupe du monde, au lieu de les invalider un par un.

Vous pouvez surveiller votre utilisation des invalidations et définir des alarmes à l'aide d'AWS Budgets.

Utilisation de CloudFront pour réduire les coûts de vos applications Web

CloudFront réduit nativement les coûts de votre application Web en déchargeant votre origine. Tout d'abord, CloudFront traite les demandes pouvant être mises en cache à partir de son propre cache, ce qui réduit les coûts de mise à l'échelle de votre serveur d'origine. Vous pouvez optimiser votre configuration CloudFront pour décharger davantage l'origine en augmentant le taux d'accès au cache (par exemple en activant Origin Shield). Ensuite, CloudFront réutilise les connexions TCP/TLS vers votre origine pour les demandes dynamiques (par exemple, les appels d'API), ce qui réduit le nombre de nouvelles connexions devant être gérées par l'origine et le nombre de certificats TLS sortant de l'origine. Cela réduit les coûts des sources telles que ALB, car la consommation de LCU diminue grâce à la réduction du nombre de connexions nouvellement établies par seconde et du nombre d'octets traités.

Vous pouvez configurer CloudFront de différentes manières afin de réduire davantage vos coûts. Par exemple, compressez les fichiers texte à l'aide de GZIP ou de Brotli pour réduire les DTO. Autre exemple : lorsque votre application a besoin de fonctions de périphérie, préférez utiliser les fonctions CloudFront, le cas échéant, car elles sont moins coûteuses que Lambda@Edge. Découvrez les bonnes pratiques pour optimiser vos fonctions de périphérie afin de réduire leurs coûts.

Enfin, préférez utiliser l'en-tête Cache-Control standard pour contrôler le rafraîchissement de votre cache plutôt que d'utiliser des invalidations dans le cadre de vos opérations normales. Le mécanisme de contrôle du cache est plus fiable, permet de contrôler la mise en cache sur le navigateur et n'entraîne aucun coût (par rapport aux invalidations CloudFront, au-delà des quotas de 1 000 invalidations par mois). Utiliser des invalidations pour les scénarios de bris de glace.

Optimisation d'AWS WAF

Les frais de demande constituent généralement l'élément le plus important du coût de d'AWS WAF. Vous pouvez réduire ce coût de différentes manières :

  • Activez AWS WAF exclusivement sur la distribution CloudFront qui nécessite une protection en fonction de votre modélisation des menaces. Par exemple, si votre contenu statique hébergé sur S3 ne nécessite pas de protection WAF, déplacez-le vers un domaine distinct (par exemple static.example.com) sur une distribution CloudFront distincte, et activez AWS WAF uniquement sur la distribution principale (par exemple www.example.com) qui diffuse vos fichiers HTML.
  • Lorsque vous vous abonnez à Shield Advanced, les frais de demande AWS WAF sont inclus dans la tarification de Shield Advanced. Shield Advanced facture un abonnement mensuel et des frais supplémentaires sur votre application Data Transfer Out. Si votre application est gourmande en demandes (demandes par seconde élevées avec une charge utile moyenne faible, par exemple avec des API), Enabling Shield Advanced peut vous aider à réduire vos coûts WAF globaux.
  • Enfin, certaines règles AWS WAF entraînent des coûts supplémentaires, comme le CATPCHA, le contrôle des bots AWS ou les règles gérées par les fournisseurs sur AWS Marketplace. Optimisez ces coûts en limitant ces règles à des conditions spécifiques (par exemple, uniquement les adresses IP suspectes CAPTCHA ou n'appliquez le contrôle des bots qu'aux demandes HTML), et en utilisant à la fin de la WebACL, des règles gratuites préalables permettant de bloquer les demandes malveillantes sans frais supplémentaires. Lisez ce blog pour obtenir des explications plus détaillées sur l'optimisation des coûts des règles WAF.

Optimisation au niveau de l'application

Il existe des techniques au niveau de l'application que vous pouvez mettre en œuvre pour réduire les coûts de livraison de CloudFront. Tenez compte des techniques suivantes :

  • Tirer parti de la mise en cache du navigateur pour réduire le nombre de demandes envoyées par CloudFront.
  • Implémenter des ETags sur vos objets pour activer les demandes conditionnelles. Les rafraîchissements d'objets avec des réponses 304 Not Modified sont moins coûteux que les recherches complètes.
  • Implémenter l'optimisation des images pour compresser les images à l'aide de formats modernes tels que WebP et Avif. En outre, charger des images en mode différé sur votre site Web pour éviter de télécharger des images qui ne sont pas affichées par les navigateurs.
  • Implémenter le streaming à débit binaire adaptatif pour la livraison de vidéos. Envisager l'encodage vidéo QVBR. Envisager de fournir une échelle de rendu optimisée en fonction des types d'appareils. Ce blog explique ce concept, mais il a été écrit à l'aide de Lambda@Edge avant le lancement des fonctions CloudFront.
  • Utilisez une politique de même origine si possible pour les appels d'API, ce qui permet de supprimer le coût des demandes CORS OPTION effectuées avant le lancement. Consultez ce blog pour plus de détails.
  • Prenez en compte toutes les options de journalisation et sélectionnez celle qui vous convient le mieux. Les journaux d'accès standard de CloudFront sont fournis gratuitement, mais ils s'appliquent à l'ensemble de votre trafic. Cependant, les journaux en temps réel de CloudFront sont configurés de manière granulaire par CloudFront Cache Behavior et par champ obligatoire moyennant des frais supplémentaires. WAF propose plusieurs options de journalisation, la plus rentable étant celle basée sur Kinesis Firehose. Notez que vous pouvez filtrer les demandes enregistrées en fonction de dimensions telles que l'action de la règle ou l'étiquette émise.

Ressources

Cette page vous a-t-elle été utile ?