Webux Lab

Par Studio Webux

Héberger un site web statique avec AWS

TG
Tommy Gingras Studio Webux S.E.N.C 2019-08-21

Introduction

L’objectif de cet article est de montrer comment afficher de la publicité sur votre site Web.

Le site en question sera hébergé sur un bucket S3 de AWS (Amazon Web Services) et sera distribué avec l’aide de cloudFront (un CDN offert par AWS)

Le registrar est Godaddy et le gestionnaire de DNS sera Route 53 (fournit par AWS)

L’architecture pour AWS + GoDaddy + Google AdSense

Prérequis

Étape 1 - Changer les nameservers

Sur la console AWS, aller dans le service Route 53, puis cliquer sur Create Hosted Zone

Dans le formulaire, entrez votre nom de domaine, puis laisser public comme type.

Lorsque cela est fait, vous allez voir 4 entrées à côté de l’entrée nommée NS. Il faut copier toutes ces lignes pour remplacer les informations que Godaddy utilise.

Sur votre compte Godaddy, naviguer jusqu’à la gestion DNS, pour le domaine désiré.

Allez dans la section Nameservers, puis éditez celui-ci en remplaçant les informations par celle de Route 53.

Ensuite, il faut attendre quelques heures pour que le tout soit appliqué. Vous pouvez tout de même continuer les autres étapes pendant ce temps.

Cette étape peut se faire beaucoup plus rapidement. Le temps est variable.

Étape 2 - Faire la demande d’un certificat SSL

Le certificat utilisé ici est émis par Amazon, pour que le tout fonctionne avec CloudFront, il faut utiliser la région US Virginia (US East (N. Virginia)).

Sinon vous ne pourrez pas associer de certificat SSL avec votre instance de CloudFront

rendez-vous sur le service Certificate Manager

Cliquer sur Request a certificate,

Choisissez Public,

Entrer le nom de domaine, puis les sous domaines.

Pour le type de validation, laisser DNS Type.

Maintenant pour valider le tout, vous devriez être en mesure d’utiliser l’entrée automatique de Route 53

Sinon il faut créer les CNAME appropriés, aller voir mon autre article dans ce cas: https://tommygingras.com/comment-faire-la-demande-dun-certificat-ssl-avec-aws-et-godaddy/

Étape 3 - Créer un bucket S3 pour héberger votre site Web

Aller dans le service S3 de AWS,

Cliquer sur Create Bucket

Donnez-lui un nom et choisissez la région

Ensuite, appuyez sur Next, puis next encore et finaliser.

Les autres options seront configurées plus bas,

Allez dans votre bucket, puis cliquez sur permissions

Dans la section Block public Access, cliquez sur Edit et cocher seulement les deux premières cases.

Attention !  Votre bucket est accessible de tout le monde.

Maintenant il faut créer une policy pour les accès au bucket.

Cliquer sur le bouton en bas à gauche : Policy Generator

Les informations que vous devez entrer sont celles-ci:

La partie au-dessus du Step 3, veuillez entrer les informations par rapport à votre bucket S3

Type of policy S3 Bucket Policy
Principal *
Effect Allow
Actions GetObject
ARN arn:aws:s3:::www.webuxlab.com/*

Pour l’ARN, changer <www.webuxlab.com> pour le nom de votre bucket

Ensuite, cliquer sur Generate Policy, puis copier-coller le contenu dans la boite de l’étape précédente.

La dernière étape est d’Activer le mode site web sur votre bucket,

Aller sur l’onglet properties puis cliquer sur Static Website Hosting

Le code source est du code ReactJS donc il faut mettre index.html dans les deux cas.

Lorsqu’il y a une erreur (Ceci n’est pas une vraie erreur), le fichier index.html de React doit quand même être chargé. Car par défaut le routage de react va causer une erreur avec le code 403 Forbidden depuis le serveur de AWS.

Garder en tête que si vous voyez une erreur 403 c’est due à cette ligne : Error Document. (On va aussi devoir configurer la même chose pour CloudFront)

Vous avez maintenant un bucket S3 prêt à recevoir des fichiers pour offrir un service Web à petit coût.

Étape 4 - Pousser les fichiers sur le S3 Bucket

Cette étape-ci je vous recommande la documentation officielle pour ce qui est de l’installation de l’outil, je l’ai fait sur Mac, Linux et Windows et dans tous les cas ça c’est bien passé.

Lien pour installer le AWS CLI: AWS CLI

Après avoir installé l’outil, vous devez générer une clé API (API Key) et l’associer avec votre système/CLI (Vous devez utiliser un ordinateur sécurisé, car cette clé permet d’accéder à votre compte AWS, se qui est recommandé, c’est de faire ce dont vous avez besoin, puis de détruire la clé par la suite)

Pour créer une clé API, aller dans le menu en haut à gauche et cliquer sur le nom de votre compte, puis My Security Credentials

Choisissez Continue to Security Credentials

Cliquer sur Create new Access Key

Optionnel, Copier le access et le secret dans un endroit sécuritaire.

Vous devez entrer ces informations dans votre terminal,

Voici la documentation officielle pour le faire: Doc

Sinon en résumé:

Ensuite, vous pouvez utiliser la commande suivante pour pousser vos données sur le serveur.

aws s3 sync <Votre-répertoire-contenant-vos-fichiers-static> s3://<NOM-DE-VOTRE-BUCKET>

Par exemple,

aws s3 sync ./ s3://test-webuxlab

À partir de ce point, vous pouvez accéder à votre site Web directement en utilisant l’adresse que AWS a générée. Cette adresse ce trouve dans l’onglet Static Web Hosting

Étape 5 - Ajouter CloudFront

Avant de commencer cette étape, valider que votre certificat SSL a bien été émis et que le tout a été validé.

Aller dans le service CloudFront,

Puis cliquer sur Create Distribution.

Choisissez l’option Web

Choisissez le bucket précédemment créé pour le domain name, puis spécifiez / comme path d’origin

Choisissez redirect HTTP to HTTPS

Tout ce dont vous ne voyez pas sur les photos a été laissé par défaut.

Choisissez le type de price Class, les nom de domains (CNAMEs) et le certificat précédemment créés. (Si vous ne voyez pas votre certificat, vérifier qu’il a été créé en virginie et qu’il a été issue)

Puis spécifier encore une fois le index.html

Maintenant il faut être patient avant que le tout fonctionne et soit disponible.

Mais pendant ce temps, nous pouvons configurer les subtilités de CloudFront et ReactJS.

Aller dans votre Distribution, puis aller sur l’onglet Error Pages

Cliquer sur Create Custom Error Response puis créer une entrée comme montrée sur l’image ci-dessus.

Pour votre information Les builds de ReactJS utilisent des chunks, ce qui peut causer des troubles lorsque vous développez. Pour tout supprimer les caches vous pouvez créer une invalidation, le object type peut être égal à : /* pour tout supprimer ou un/des paths que vous avez besoin, comme ça en quelque seconde, votre cache est supprimée.

Étape 6 - Configuré Route 53 pour pointer sur votre site

Aller dans votre hosted zone, puis cliquer sur Create Record Set

Choisissez un type A, puis cliquer sur Alias = Yes Le alias target doit être votre instance Cloudfront.

Si vous avez entré plusieurs sous domaines, vous pouvez faire la même chose pour chaque élément. Mais cette fois-ci, ajouter le nom de votre sous-domaine.

Maintenant il suffit d’attendre environ 1 heure pour que le tout soit opérationnel.

Étape 7 - Demander l’autorisation d’afficher de la publicité sur le site

Dès que tout fonctionne et que Google Search Console est en mesure de crawler le site, vous pouvez faire la demande sur Google AdSense pour afficher de la publicité sur votre site.

Je vous recommande de suivre la documentation officielle de Google pour cette partie, mais en résumé

Aller dans l’onglet Site,

Cliquer sur Ajouter un Site et entrer votre nom de domaine.

Puis copier les scripts comme mentionnés par Google sur votre site Web. Dès que c’est fait, cela peut prendre plusieurs jours, car Google va valider que le site est conforme à leur politique.

Conclusion

Pour déployer un site Web statique en utilisant les services de AWS tels que S3, CloudFront, Certificate Manager et Route 53.

De plus, faciliter la combinaison de Godaddy et de Route 53 pour obtenir un DNS fonctionnel et compatible avec les requis de Google AdSense.

N’hésitez pas à poser vos questions et à soumettre vos commentaires, suggestions et améliorations


Recherche