Une façon simple et abordable d’héberger un site Web statique est de combiner S3 de Amazon Web Services avec le CDN de CloudFlare.
Cette architecture est fantastique à bien des égards, ceci dit, elle comporte deux limitations qui sont devenues problématiques dans mon cas précis:
Pour pallier à ces limitations, une solution facile peut être ajoutée à la pile de technologies déjà utilisées, c’est-à-dire AWS CloudFront.
En somme, CloudFront est un Content Delivery Network permettant aux gens voulant se connecter à votre site de le faire d'un serveur plus près d'eux et souvent plus rapidement grâce à un système de mémorisation des fichiers provenant de l'origine (s3 bucket dans notre cas) sur chacun des leurs serveurs autour de la planète.
Les couts associés sont basés d'abord sur le bandwidth utilisé et ensuite par tranche de très grand nombre de requêtes HTTP sans discrimination par méthode.
Nous allons passer de ceci: À cela:
+-----------------------------+ +-----------------------------+
| Interwebz | | Interwebz |
+--------------+--------------+ +--------------+--------------+
| |
+--------------v--------------+ +--------------v--------------+
| Cloudflare DNS+Proxy+CDN | | Cloudflare DNS+Proxy+CDN |
+--------------+--------------+ +--------------+--------------+
| |
+--------------v--------------+ ###############v###############
| AWS S3 Website endpoint | ####### AWS Cloud Front #######
+--------------+--------------+ ###############+###############
| |
+--------------v--------------+ +--------------v--------------+
| AWS S3 Bucket | | AWS S3 Website endpoint |
+-----------------------------+ +--------------+--------------+
|
+--------------v--------------+
| AWS S3 Bucket |
+-----------------------------+
Voici étape par étape comment créer une distribution CoudFront (CDN property en anglais)
Cliquez sur CloudFront
et sur Create Distribution
Dans la section Web, cliquez sur Get Started
Comme Origin Domain Name
, n’utilisez pas le menu offert. À la place, copier-coller le domaine complet de votre bucket S3 aussi appelé Endpoint.
Vous le trouverez dans la section Static Website Hosting de votre bucket. Le but ici est de continuer d’utiliser S3 pour l’hébergement des fichiers statiques sans changer les configurations avec les documents index et erreur par défaut. De cette façon, tous vos URLs pointant directement sur des dossiers (communément appellé pretty URLs) vont continuer de fonctionner correctement.
Changez les options dans la section Object Caching
manuellement afin de contrôler vos couts le mieux possible par rapport au trafic anticipé.
Plus longtemps le TTL (time to live) est, le moins souvent CloudFront va avoir à télécharger les fichiers de votre bucket S3. Pour un site Web statique, ne vous gênez pas d’exagérer un peu.
Choisissez Only US and Europe
pour sauver des couts si vous êtes comme moi du Canada et ne vous souciez pas trop de l’Asie.
N’oubliez pas d’ajouter votre nomdedomaine.com et www.votrenomdedomaine.com au CNAMEs
.sinon AWS ne saura pas comment lier votre domaine à votre entité .
Laissez tout le reste par défaut et cliquez sur Create Distribution
.
Attendez que votre distribution ait un statut Deployed, ça peut prendre un bon bout de temps.
Tout est fait pour AWS, alors maintenant il faut changer les configurations de CloudFlare pour faire pointer les domaines sur CloudFront au lieu de S3:
Ça devrait ressembler à ceci visuellement:
Une chose à ne pas oublier si vous avez suivi le tutoriel de Claudine est de s'assurer que votre www.nomdedomaine.com continue de rediriger sur votrenomdedomain.com car après avoir suivi ces étapes ci-haut mentionnées, nous avons malheureusement brisé cette redirection. La raison est que CloudFlare pointe désormais toutes les requêtes sur notre top level bucket.
Pour corriger, dans CloufFlare, ajoutez simplement un "rule" de type Forwarding URL (301)
redirigeant https://www.votrenomdedomaine.com/*
vers https://votrenomdedomaine.com/
.
Oh! Tous mes exemples utilisent HTTPS car j'ai activé le SSL en mode Flexible. Vous devriez faire de même; Google est en amour avec SSL et vous donnera des points bonis.
Vous avez maintenant un site Web qui passe par CloudFront. Par conséquent, les couts seront calculés avantageusement pour les sites avec un trafic plus élevé en théorie. CloudFlare n'est pas l'option la moins dispendieuse sur le marché si vous êtes un gros joueur, mais pour un site Web avec un peu de trafic, c'est merveilleux.
En deuxième partie, nous allons configurer les logs et analyser notre fameux trafic avec GoAccess.