Tutoriel sur la création d'applications sur Amazon Web Services (AWS)

Tutoriel sur la création d'applications sur Amazon Web Services (AWS)

Amazon Web Services (AWS) est l'une des plateformes de cloud computing les plus populaires au monde. Avec AWS, vous pouvez créer et exécuter des applications sans avoir à acheter de serveurs physiques, à configurer d'espace serveur ni à gérer votre propre infrastructure. Cet article vous guidera pas à pas dans la création d'une application simple sur AWS selon une approche courante : le déploiement d' une application web utilisant des services de calcul (EC2), une base de données managée (RDS) en option, ainsi que du stockage et un nom de domaine si nécessaire. Bien que l'exemple suivant soit général, il peut être appliqué à de nombreux types d'applications.

-

1. Préparation initiale : Comptabilité et concepts de base

Avant de commencer, assurez-vous de posséder un compte AWS. De nombreux services AWS proposent une offre gratuite (gratuite avec certaines limites) idéale pour s'entraîner.

Quelques concepts importants que vous devez comprendre :

– Région : emplacement du centre de données AWS (exemple : Singapour/ap-southeast-1). Choisissez la région la plus proche pour une faible latence.
– IAM (Gestion des identités et des accès) : un système de gestion des accès. Bonne pratique : n’utilisez pas le compte racine pour les tâches quotidiennes.
– VPC (Virtual Private Cloud) : un réseau virtuel sur lequel vos services s’exécutent.
– Groupe de sécurité : « pare-feu » pour réguler les accès entrants/sortants du serveur.

En comprenant ces quatre points, il vous sera beaucoup plus facile de vous familiariser avec les bases d'AWS.

-

2. Créer des utilisateurs IAM et sécuriser les comptes

La sécurité est toujours notre priorité absolue. Connectez-vous à la console AWS en tant que root, puis :

1. Ouvrez le service IAM.
2. Créez un nouvel utilisateur (par exemple `admin-dev`) et cochez Fournir à l'utilisateur l'accès à la console de gestion AWS.
3. Accorder l'autorisation : pour s'exercer, vous pouvez utiliser AdministratorAccess (bien que dans les projets réels, il devrait être plus limité).
4. Activez l'authentification multifacteurs (MFA) pour renforcer la sécurité.

Une fois terminé, déconnectez-vous de l'utilisateur root et connectez-vous en utilisant le nouvel utilisateur IAM créé.

-

3. Déterminer l'architecture de l'application

Pour ce tutoriel, nous allons construire une architecture simple :

– EC2 : exécution d'applications web (par exemple Node.js/Express, Python Flask ou PHP).
– RDS optionnel : base de données MySQL/PostgreSQL gérée, pour un stockage ordonné des données.
– S3 (facultatif) : stocke des fichiers statiques tels que des images, des documents ou des sauvegardes.
– Route 53 (facultatif) : gérer les domaines.
– CloudWatch : surveillance de base.

Si vous débutez, concentrez-vous d'abord sur EC2 pour exécuter vos applications.

-

4. Créer un serveur EC2

a) Créer une instance
1. Connectez-vous au service EC2.
2. Cliquez sur Lancer l'instance.
3. Sélectionnez le système d'exploitation, par exemple Ubuntu Server 22.04 LTS.
4. Sélectionnez le type d'instance : pour le niveau gratuit, utilisez `t2.micro` ou `t3.micro` (sous réserve de disponibilité).
5. Créez ou sélectionnez une paire de clés (par exemple, `aws-key.pem`). Conservez précieusement le fichier `.pem`, car il sera utilisé pour SSH.

b) Configuration du réseau et du pare-feu
– Assurez-vous que l'instance se trouve dans le VPC par défaut (à titre d'exercice).
– Définir le groupe de sécurité :
– Port 22 (SSH) uniquement depuis votre adresse IP (par exemple `Mon IP`)
– Port 80 (HTTP) de `0.0.0.0/0` (public)
– Port 443 (HTTPS) depuis `0.0.0.0/0` si SSL est utilisé ultérieurement.

Remarque : Ouvrir l’accès SSH au public est risqué. Il est impératif de toujours restreindre les adresses IP.

Cliquez sur Lancer et attendez que l'instance s'exécute.

-

5. Connexion au serveur via SSH

Sous Windows, vous pouvez utiliser WSL ou PuTTY. Sous macOS/Linux, vous pouvez le faire directement depuis le terminal.

1. Modifier la clé d'autorisation :
"`bash
chmod 400 aws-key.pem
“`
2. Se connecter au serveur via SSH (utiliser l'adresse IPv4 publique d'EC2) :
"`bash
ssh -i aws-key.pem ubuntu@IP_PUBLIC
“`

Si l'opération réussit, vous êtes sur le serveur Ubuntu d'AWS.

-

6. Installez le serveur Web et l'environnement d'exécution de l'application.

Voici un exemple d'application Node.js, car ce langage est largement utilisé sur le web moderne.

a) Mettre à jour et installer les dépendances
"`bash
mise à jour sudo apt && mise à jour sudo apt -y
sudo apt install -y curl git
“`

b) Installez Node.js (version LTS)
"`bash
curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash –
sudo apt installer -y nodejs
noeud -v
npm -v
“`

-

7. Créez une application simple

Créez un dossier de projet :

"`bash
mkdir myapp && cd myapp
npm init -y
npm installer express
“`

Créez un fichier `index.js` :

« `js
const express = require("express");
const app = express();

app.get("/", (req, res) => {
res.send("Bonjour ! Votre application s'exécute sur AWS EC2.");
});

app.listen(3000, () => console.log(“Serveur en cours d'exécution sur le port 3000”));
“`

Exécutez l'application :

"`bash
noeud index.js
“`

Essayez d'y accéder depuis un navigateur :
– `http://PUBLIC_IP:3000`

Cependant, le port 3000 n'est actuellement pas ouvert dans le groupe de sécurité. Vous pouvez :
1) ouvrir le port 3000 dans le groupe de sécurité, ou
2) utilisez un proxy inverse (plus recommandé) afin que l'application reste sur le port interne mais puisse être accessible via le port 80/443.

-

8. Utilisation de Nginx comme proxy inverse (accès via le port 80)

Installez Nginx :
"`bash
sudo apt install -y nginx
sudo systemctl active nginx
sudo systemctl démarre nginx
“`

Configurer Nginx :
"`bash
sudo nano /etc/nginx/sites-available/myapp
“`

Contenu de la configuration :
« `nginx
serveur {
écoutez 80;
nom du serveur _;

emplacement /
proxy_pass http://127.0.0.1:3000 ;
proxy_http_version 1.1 ;
proxy_set_header Mettre à niveau $http_upgrade ;
proxy_set_header Connexion 'mise à niveau' ;
proxy_set_header Hôte $ hôte;
proxy_cache_bypass $http_upgrade ;
}
}
“`

Activer la configuration :
"`bash
sudo ln -s /etc/nginx/sites-available/myapp /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl recharger nginx
“`

Accès maintenant :
– `http://IP_PUBLIC/`

L'application fonctionne sur le port 3000, mais le public y accède via le port 80.

-

9. Exécution persistante d'applications avec PM2

Pour éviter que l'application ne plante en cas de déconnexion SSH, utilisez PM2 :

"`bash
sudo npm install -g pm2
pm2 démarrer index.js --nom myapp
pm2 économise
Démarrage PM2
“`

La commande `pm2 startup` fournira des instructions supplémentaires. Exécutez la commande affichée pour que l'application se lance automatiquement au redémarrage du serveur.

-

10. (Facultatif) Ajout d'une base de données avec RDS

Si votre application nécessite une base de données, RDS simplifie les choses car AWS gère les sauvegardes, les correctifs et la mise à l'échelle.

Étapes courtes :
1. Ouvrir le service RDS → Créer une base de données.
2. Sélectionnez MySQL ou PostgreSQL (les règles du niveau gratuit sont disponibles sur certaines configurations).
3. Définir le nom d'utilisateur et le mot de passe.
4. Assurez-vous que l'instance RDS se trouve dans le même VPC que l'instance EC2.
5. Configurez le groupe de sécurité RDS pour qu'il n'accepte que les connexions provenant du groupe de sécurité EC2 (et non du public).

Une fois la base de données opérationnelle, récupérez le point de terminaison RDS et connectez-vous-y depuis votre application à l'aide du pilote de base de données.

-

11. (Facultatif) Activer le protocole HTTPS avec un certificat SSL

En production, le protocole HTTPS est obligatoire. Méthode typique :
– Utilisez un nom de domaine (par exemple, auprès de Route 53 ou d'un autre registraire).
– Installez le certificat SSL via Let's Encrypt (Certbot) sur EC2.

Bref:
"`bash
sudo apt install -y certbot python3-certbot-nginx
sudo certbot –nginx
“`

Suivez les instructions de l'assistant pour sélectionner un domaine et activer la redirection HTTPS.

-

12. Suivi et coûts

AWS propose CloudWatch pour consulter des indicateurs tels que l'utilisation du processeur, du réseau et des journaux spécifiques. Il est également important de surveiller vos coûts pour éviter les pertes.

Conseils importants :
– Activer l’alarme de facturation dans CloudWatch (par exemple, alarme si les frais dépassent 5 $).
– Éteignez l'instance lorsqu'elle n'est pas utilisée.
– Supprimez les ressources inutilisées (équilibreurs de charge, EBS, adresses IP élastiques, instantanés) car elles peuvent encore engendrer des coûts.

-

Clôture

Félicitations ! Vous avez appris les bases de la création d'une application sur AWS à l'aide d'EC2, de l'exécution d'une application web , de la configuration d'un proxy inverse Nginx et de sa disponibilité permanente avec PM2. Vous avez également acquis une vue d'ensemble de services supplémentaires tels que RDS pour les bases de données, S3 pour le stockage et les certificats HTTPS pour la sécurité.

Si vous souhaitez passer au niveau supérieur, les prochaines étapes sont généralement les suivantes :
– Déploiement automatisé avec CI/CD (GitHub Actions + SSH ou AWS CodeDeploy),
– Utilisation de conteneurs avec Docker et des orchestrations comme ECS ou EKS,
– Utilisation d'une architecture sans serveur avec Lambda + API Gateway.

Si vous le souhaitez, veuillez préciser le type d'application que vous développez (Node.js, Laravel, Django, React, etc.) et son usage prévu (démonstration, production, déploiement à grande échelle). Je peux ainsi personnaliser le tutoriel avec des étapes plus détaillées.

Laissez un commentaire