
Héberger son podcast chez Amazon Web Services
2020-07-15, tech, s3, hostingIntroduction
Pour la mise en place de mon podcast Livres à vif, j'ai choisi de tout héberger moi-même et de maîtriser complètement la chaîne.
Les fichiers audio sont hébergés dans Amazon S3. Le serveur web est aussi sur s3 pour la partie hébergement et j'ai mis en place Amazon Cloudfront pour bénéficier du HTTPS
Gestion du serveur web basé sur S3
Création d'un bucket dédié à l'hébergement des fichiers audio
# Création du bucket amazon aws s3 mb s3://audio-bucket-livresavif # Gestion des logs aws s3api put-bucket-acl --bucket audio-bucket-livresavif --grant-write URI=http://acs.amazonaws.com/groups/s3/LogDelivery --grant-read-acp URI=http://acs.amazonaws.com/groups/s3/LogDelivery # Apply log policy aws s3api put-bucket-logging --bucket audio-bucket-livresavif --bucket-logging-status file://wwwlogconfig.json more wwwlogconfig.json { "LoggingEnabled": { "TargetBucket": "logs-livresavif", "TargetPrefix": "log" } } # Add website configuration more website.json { "IndexDocument": { "Suffix": "index.html" }, "ErrorDocument": { "Key": "error.html" } } # Cela active le serveur web associé à ce bucket S3 aws s3api put-bucket-website --bucket audio-bucket-livresavif --website-configuration file://website.json # Control access by adding a policy aws s3api put-bucket-policy --bucket audio-bucket-livresavif --policy file://policy.json policy.json: { "Statement": [ { "Effect": "Allow", "Principal": "*", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::audio-bucket-livresavif/*" } ] } # Création d'un fichier index.html pour le serveur web du "audio bucket" $ more index.html <html> <head meta http-equiv="refresh" content="0;url=http://www.livresavif.com/"></head> </html>
Cloudfront
Cloudfront sert de cache pour les requêtes mais je l'utilise uniquement car c'est le seul moyen d'activer HTTPS. J'ai globalement suivi le tutoriel : https://medium.com/@brodartec/hosting-a-static-site-with-https-enabled-using-aws-s3-cloudfront-and-godaddy-826dae41fdc6
Création d'un certificat
J'ai créé un certificat avec AWS certificate manager. Attention par défaut j'étais positionné dans Amazon sur la région Paris. Il faut impérativement être sur la région N. Virginia quand on crée un certificat, sinon il ne sera pas visible de cloudfront lorsqu'on va créer la distribution cloufront.

La migration du certificat est impossible à postériori comme expliqué ici : How do I migrate my SSL certificate to the US East (N. Virginia) Region?
Il faut faire un certificat pour le domaine www.livresavif.com et pour livresavif.com.
- Get started
- Request a public certificate
- saisir les noms de domaines, dans mon cas www.livresavif.com et livresavif.com
- DNS validation
- Noter l'entrée CNAME à créer au niveau de l'enregistrement DNS
J'ai validé la création des certificats en créant une entrée DNS chez Gandi auprès de qui j'ai souscrit au nom de domaine. Il faut chez gandi, choisir son nom de domaine et aller dans Enregistrements DNS

Il faut attendre quelques minutes que le certificat passe en statut Issued

Création d'une distribution cloudfront
Créer une distribution qui a pour origine le bucket S3 initial
- Web - Get started
- Origin domain name : Ne pas sélectionner le bucket ! Il faut le modifier pour récupérer la valeur indiquée dans s3, bucket properties> static website hosting> endpoint : du style mybucket.s3-website.eu-west-3.amazonaws.com.
- alternate domain names :dans mon cas www.livresavif.com et livresavif.com
- custom SSL/li>
- Cliquer sur le champ vide et si le certificat a bien été créé dans la régino N. Virginia il sera proposé ici
Pour la gestion des erreurs


Gestion du DNS
Il faut maintenant au niveau DNS associer l'url cloudfront à mon nom de domaine. Récupérer l'url cloudfront

Puis créer une entrée de type ALIAS pour la partie livresavif.com sans rien devant et une entrée CNAME pour la partie www.livresavif.com. J'ai du supprimer au préalable le record A existant.

