Académique Documents
Professionnel Documents
Culture Documents
RDS
Au départ, j'avoue que je n'en comprenais pas l'intérêt. Pourquoi faire tourner un serveur
RDS à part alors qu'on peut installer un logiciel de base de données (comme MySQL)
directement sur le serveur EC2 où on peut tout faire ?
Vous vous souvenez des termes IaaS et PaaS que je vous avais présentés au début de ce
cours ?
Amazon RDS est une forme particulière de PaaS qu'on appelle... DBaaS (Database as a
Service). Je sais, je sais, ça en fait des termes barbares. 😝
Le concept est simple mais redoutablement efficace. Plutôt que d'installer et configurer
vous-mêmes le serveur de base de données, vous commandez un serveur spécifique et
optimisé pour votre base de données.
Mais on est d'accord que je peux installer un serveur MySQL sur mon instance EC2 ?
Oui bien sûr ! Amazon ne vous l'interdit pas du tout. Mais en général, vous allez adorer
utiliser RDS car cela vous apporte de nombreux avantages.
Pourquoi utiliser RDS ?
Alors pourquoi utiliser RDS ? Les raisons sont nombreuses. En voici les principales :
Il y a quand même des rares cas où vous voudrez peut-être gérer vous-mêmes le serveur
de base de données (par exemple en l'installant sur votre instance EC2). C'est le cas si
vous voulez faire très simple et tout mettre sur un seul serveur, ou au contraire si vous
avez des besoins de configuration extrêmement spécifiques.
Vous hésitez ? Alors je vous conseille de faire l'effort d'apprendre à utiliser RDS. Je suis
certain que vous apprécierez les avantages que cela vous apporte !
Quand vous utilisez RDS, vous avez le choix de votre moteur de base de données. Les
plus connus sont disponibles, vous devriez trouver votre bonheur :
MySQL
MariaDB (qui est un fork de MySQL)
PostgreSQL
Oracle
SQL Server
... et Amazon Aurora
Les types de base de données gérés par RDS sont nombreux !
A vous de choisir le moteur que vous préférez et que vous avez l'habitude d'utiliser ! Il
sera installé et configuré pour vous.
Il s'agit d'un moteur de base de données spécifique conçu par Amazon. Il est :
A vous de voir si cela vous intéresse. Si vous démarrez un nouveau projet, ce n'est pas
très risqué d'essayer Aurora (car il est compatible MySQL et PostgreSQL), mais si vous
avez déjà un gros projet sous les bras, faites bien votre choix en conscience !
A noter qu'Amazon propose aussi une base de données NoSQL : DynamoDB. Il s'agit
d'une base de données propriétaire spécifique à Amazon, sur le même principe qu'Aurora.
Le service DynamoDB est proposé à part. Il ne fait donc pas partie de RDS (qui est
réservé aux bases de données relationnelles).
Je vous propose ici de découvrir comment lancer un serveur RDS utilisant MySQL. Si
vous utilisez un autre moteur de base de données, la procédure sera la même.
L'interface de RDS
Rendez-vous sur la section Relational Database Service (RDS) sur votre console AWS.
La page d'accueil devrait ressembler à ceci la première fois :
Premier constat : il y a moins de sous-menus dans RDS que dans EC2. Ouf ! 😅
Et en effet, vous allez voir que le service est heureusement moins complexe.
Pour lancer une instance de serveur RDS, rendez-vous dans le menu "Instances". Il ne
devrait y avoir aucune instance lancée pour l'instant :
Nous allons lancer un nouveau serveur. Cliquez donc sur "Lancement d'une instance
DB".
Choix du moteur
La première question qu'on nous pose est celle du choix du moteur de base de données :
Choisissez le moteur de base de données qui sera installé sur l'instance RDS
Comme promis, il y a du choix ! Aurora est optimisé pour RDS et compatible avec
MySQL et PostgreSQL, mais il n'est pas open source et n'est pas disponible dans l'offre
gratuite. Nous allons donc utiliser MySQL ici.
Cas d'utilisation
En fait, vous avez surtout le choix entre le mode "production" et le mode "Dev/Test". Le
mode production est optimisé : le serveur est répliqué et il est plus puissant. C'est
effectivement conseillé pour un gros site qui tourne.
Pour nos besoins de test, le mode "Dev/Test" ira très bien. D'ailleurs, c'est la seule option
qui soit gratuite.
Spécification de l'instance
On vous demande ensuite de faire quelques choix importants pour configurer votre
serveur :
Choisissez la version de MySQL
On vous demande tout d'abord quelle version de MySQL vous souhaitez utiliser. A moins
que vous ayez un besoin précis, laissez la valeur par défaut.
Plus bas sur la même page, vous trouverez de nombreuses autres options :
Une option sur la page permet d'afficher uniquement les choix compatibles avec l'usage
gratuit. N'hésitez pas à la cocher.
Il existe comme vous le voyez plusieurs types de serveurs de base de données, un peu
comme les instances EC2. Le modèle utilisable gratuitement s'appelle db.t2.micro.
Il vous faut ensuite donner un nom à votre instance (appelez-la comme vous voulez).
Vous devrez aussi indiquer un nom d'utilisateur pour vous connecter à la base et un mot
de passe :
Sur ce nouvel écran, vous avez là encore de nombreuses options. On commence par vous
demander dans quel VPC vous souhaitez lancer votre serveur. C'est une option
importante :
Configuration du VPC
Le VPC est un sous-réseau qui vous permet de "regrouper" vos serveurs entre eux, pour
qu'ils communiquent plus facilement et en toute sécurité.
Amazon a fait une illustration qui explique bien le concept, je me permets de la reprendre
ici sans vergogne :
Avec la bonne
configuration, votre serveur RDS est "protégé" du monde extérieur
Le VPC est un sous-réseau qui vous permet de créer une zone dans laquelle vos
serveurs peuvent parler librement entre eux.
Si vous désactivez bien "Accessibilité publique" dans les options, alors votre serveur
RDS n'aura même pas d'IP publique. Cela voudra dire qu'il ne sera tout simplement pas
accessible depuis Internet, et c'est une bonne chose. Vous n'imaginez pas le nombre de
gens dont le boulot consiste à chercher des serveurs SQL mal configurés ouverts à tous
sur le net. 😈
Bien sûr, pour des raisons pratiques, vous pouvez ouvrir votre serveur SQL (en indiquant
"Accessibilité publique : oui"). Il faut simplement retenir qu'il est préférable d'éviter cela
si vous en avez la possibilité.
Plus bas sur la page, vous pouvez aussi demander à créer une première base de
données à l'intérieur de votre instance. Si vous ne le faites pas maintenant, pas de
panique : vous pourrez toujours le faire par la suite.
Une instance RDS est un serveur. Celui-ci peut contenir plusieurs bases données
(autant qu'on veut en fait, tant qu'il reste de la place).
Une base de données regroupe plusieurs tables. En général, vous avez une base
de données par application.
Une autre option vous permet de choisir la durée de sauvegarde (par défaut : 7 jours).
Celles-ci sont mises en place automatiquement et sauvegardée pendant 7 jours par défaut.
Nous pouvons maintenant voir que notre instance est lancée et tourne, si nous allons dans
la section "Instances" de RDS.
Si vous cliquez sur le nom de l'instance, vous aurez tous les détails sur celle-ci. L'un de
ceux qui vous sera le plus utile est le point de terminaison de l'instance (son adresse).
Prenez-en note, vous en aurez besoin pour indiquer où se trouve votre serveur SQL afin
de vous y connecter dans vos scripts !
Je vous propose d'apprendre à faire communiquer les deux ! Nous allons réutiliser le TP
Mini-chat de mon cours PHP, que nous allons faire tourner sur AWS. 😊
Si vous regardez bien, vous verrez que l'AMI LAMP de Bitnami fournit un
serveur MySQL intégré. En théorie, on pourrait donc se contenter du serveur SQL dans
EC2 mais... on a déjà eu cette conversation ensemble n'est-ce pas ? RDS présente de
nombreux avantages (ne serait-ce que les backups) qui font que je vous recommande de
l'utiliser si vous le pouvez.
Comment faire pour accéder à votre base de données sur RDS ? Tout dépend comment
vous avez configuré l'accessibilité publique lors du lancement du serveur :
Si vous avez autorisé l'accessibilité publique : c'est le plus simple (mais aussi le
moins sécurisé). Vous pouvez administrer votre serveur depuis votre ordinateur
avec un logiciel comme MySQL Workbench.
Si vous avez interdit l'accessibilité publique : c'est plus sécurisé, mais ça veut
donc dire que vous ne pouvez pas toucher au serveur RDS depuis votre machine.
Vous devez passer par EC2.
Notez que vous pouvez changer l'accessibilité publique du serveur à tout moment, en
cliquant sur "Actions d'instance" > "Modifier" depuis RDS.
Si ce n'est pas fait, il y a de fortes chances que le serveur ne réponde pas lorsque vous
vous y connectez.
Créez une nouvelle connexion en indiquant le point de terminaison (nom d'hôte) de votre
serveur RDS. Je vous rappelle que cette information peut être trouvée si vous cliquez sur
votre serveur RDS.
Si vous cliquez sur votre instance RDS, vous pouvez retrouver son point de terminaison
(nom d'hôte)
Indiquez aussi le nom d'utilisateur et le mot de passe que vous aviez définis pour le
serveur (il faudra faire "Store in Keychain" pour stocker le mot de passe).
Cliquez ensuite sur la connexion nouvellement créée pour vous retrouver sur
l'administration du serveur MySQL.
Vous pouvez faire tout ce que vous voulez à partir de là. Workbench est un outil très
complet, probablement plus complexe que PhpMyAdmin.
Vous pouvez créer autant de bases de données que vous voulez, y créer des tables, etc.
Vous avez un bouton en haut pour créer une nouvelle base (nouveau schéma) et de
nouvelles tables.
Vous pouvez aussi choisir d'importer un fichier SQL si vous en avez un sous la main.
Pour ma part, je vais créer une base "tests" et une table "minichat" comme indiqué dans le
TP minichat.
Une fois la structure créée, notre script devrait pouvoir tourner ! Et si on l'uploadait sur
notre serveur web sur EC2 ?
<?php
$bdd = new PDO('mysql:host=dbinstance.cmo5fnknxzqh.us-east-
2.rds.amazonaws.com;dbname=test;charset=utf8', 'mateo',
'VOTRE_MOT_DE_PASSE_ICI');
Envoyez les fichiers sur EC2 avec un logiciel SFTP comme FileZilla, comme vous avez
appris à le faire précédemment.
Envoyez les fichiers du minichat par SFTP