Cloudformation · 7 min read · Feb 04, 2026

Utiliser Cloudformation pour créer une instance RDS MySql sur AWS

Le Service de Base de Données Relationnelle AWS (RDS AWS) est un service web qui facilite la configuration et l’exploitation d’une base de données relationnelle dans le cloud. Pour en savoir plus sur RDS, recherchez l’article “Comment configurer une instance RDS MySql (Base de Données Relationnelle MySql) sur AWS”.

AWS CloudFormation nous permet d’utiliser des langages de programmation (yaml/json) ou un simple fichier texte pour modéliser et provisionner toutes les ressources nécessaires pour nos applications. Cela nous donne une source unique de vérité pour nos ressources AWS.

Dans cet article, nous allons voir les étapes pour créer une instance RDS MySql en utilisant Cloudformation Stack.

Prérequis

  1. Compte AWS (Créez-en un si vous n’en avez pas).
  2. Compréhension de base de Cloudformation Stack.
  3. Compréhension de base de l’instance RDS MySql (Base de Données Relationnelle MySql) sur AWS.

Que allons-nous faire ?

  1. Connectez-vous à AWS.
  2. Créer une instance RDS MySql en utilisant Cloudformation Stack

Connectez-vous à AWS

  1. Cliquez ici pour aller à la page de connexion AWS.

Lorsque nous cliquons sur le lien ci-dessus, nous verrons une page web comme suit où nous devons nous connecter en utilisant nos identifiants.

Connexion à AWS

Une fois que nous nous sommes connectés avec succès à AWS, nous verrons la console principale avec tous les services répertoriés.

Console de gestion AWS

Créer une instance RDS MySql en utilisant Cloudformation.

Avant de créer une instance en utilisant Cloudformation Stack, copiez le code du bloc suivant ou téléchargez le modèle d’ici et enregistrez-le sur votre machine locale.

---
AWSTemplateFormatVersion: '2010-09-09'
Description: Cette pile crée une instance RDS MySql 5.7
Parameters:
  Owner:
    Description: Entrez le nom du propriétaire de cette pile.
    Type: String
    Default: Name
  VPC:
    Description: Sélectionnez VPC parmi les VPC disponibles dans votre compte.
    Type: AWS::EC2::VPC::Id
  PrivateSubnet1:
    Description: Sélectionnez le sous-réseau privé 1.
    Type: AWS::EC2::Subnet::Id
  PrivateSubnet2:
    Description: Sélectionnez le sous-réseau privé 2.
    Type: AWS::EC2::Subnet::Id
  PrivateSubnet3:
    Description: Sélectionnez le sous-réseau privé 3.
    Type: AWS::EC2::Subnet::Id
  MasterUsername:
    Description: Nom de l'administrateur de la base de données.
    Type: String
    Default: rdsroot
  MasterUserPassword:
    NoEcho: 'true'
    Description: Mot de passe de l'administrateur de la base de données.
    Type: String
    MinLength: '8'
    AllowedPattern: "[a-zA-Z0-9!?]*"
    ConstraintDescription: Doit contenir uniquement des lettres majuscules et minuscules et des chiffres
  BackupRetentionPeriod:
    Description: Entrez la période de rétention des sauvegardes en jours.
    Type: Number
    Default: '5'
  MultiAvailabilityZone:
    Description: Voulez-vous activer plusieurs zones de disponibilité ?
    Type: String
    Default: 'true'
    AllowedValues:
    - 'true'
    - 'false'
  TcpPort:
    Description: Entrez le numéro de port TCP d'écoute RDS.
    Type: Number
    Default: '3306'
  PreferredBackupWindow:
    Description: Entrez l'heure de la fenêtre de sauvegarde préférée.
    Type: String
    Default: 15:00-17:00
  PreferredMaintenanceWindow:
    Description: Entrez l'heure de la fenêtre de maintenance préférée.
    Type: String
    Default: Sun:18:00-Sun:22:00
  AllocatedStorage:
    Default: '15'
    Description: Entrez la taille de la base de données (Go)
    Type: Number
    MinValue: '5'
    MaxValue: '6144'
    ConstraintDescription: Doit être entre 5-6144
  SnapshotOnDelete:
    Description: Voulez-vous créer un instantané lors de la suppression de l'instance ?
    Type: String
    Default: 'true'
    AllowedValues:
    - 'true'
    - 'false'
  AutoMinorVersionUpgrade:
    Description: Voulez-vous autoriser la mise à niveau automatique de la version mineure ?
    Type: String
    Default: 'true'
    AllowedValues:
    - 'true'
    - 'false'
  InstanceType:
    Description: Sélectionnez le type d'instance.
    Type: String
    Default: db.t2.micro
    ConstraintDescription: Doit être un type d'instance EC2 valide.
Mappings:
  Settings:
    MySQL:
      Engine: MySQL
      Version: '5.7'
Conditions:
  ConfigureSnapshotOnDelete:
    Fn::Equals:
    - Ref: SnapshotOnDelete
    - 'true'

Metadata:
  AWS::CloudFormation::Interface:
    ParameterGroups:
    - Label:
        default: Propriété
      Parameters:
      - Owner
    - Label:
        default: Configuration Réseau
      Parameters:
      - VPC
      - PrivateSubnet1
      - PrivateSubnet2
      - PrivateSubnet3
    - Label:
        default: Configuration RDS
      Parameters:
      - InstanceType
      - MasterUsername
      - MasterUserPassword
      - BackupRetentionPeriod
      - PreferredBackupWindow
      - PreferredMaintenanceWindow
      - SnapshotOnDelete
      - AllocatedStorage
      - AutoMinorVersionUpgrade
      - TcpPort
      - MultiAvailabilityZone
    ParameterLabels:
      Owner:
        default: Équipe ou Propriétaire Individuel
      InstanceType:
        default: Type d'Instance
      PrivateSubnet1:
        default: Sous-réseau Privé 1
      PrivateSubnet2:
        default: Sous-réseau Privé 2
      PrivateSubnet3:
        default: Sous-réseau Privé 3
      MasterUsername:
        default: Nom d'Utilisateur Principal
      MasterUserPassword:
        default: Mot de Passe de l'Utilisateur Principal
      BackupRetentionPeriod:
        default: Période de Rétention des Sauvegardes
      PreferredBackupWindow:
        default: Fenêtre de Sauvegarde Préférée
      PreferredMaintenanceWindow:
        default: Fenêtre de Maintenance Préférée
      AllocatedStorage:
        default: Stockage Alloué
      AutoMinorVersionUpgrade:
        default: Mise à Niveau Automatique de la Version Mineure
      TcpPort:
        default: Port TCP
      MultiAvailabilityZone:
        default: Zones de Disponibilité Multiples ?
      SnapshotOnDelete:
        default: Instantané à la Suppression ?

Resources:
  RDSAccessSecurityGroup:
    Type: AWS::EC2::SecurityGroup
    Properties:
      GroupDescription: Accès à l'Instance RDS
      VpcId:
        Ref: VPC
      Tags:
      - Key: Name
        Value:
          Fn::Join:
          - ''
          - - Ref: AWS::StackName
            - "-rds"
      - Key: Owner
        Value:
          Ref: Owner
  AccessSecurityGroupIngress:
    Type: AWS::EC2::SecurityGroupIngress
    DependsOn: RDSAccessSecurityGroup
    Properties:
      GroupId:
        Ref: RDSAccessSecurityGroup
      IpProtocol: tcp
      FromPort:
        Ref: TcpPort
      ToPort:
        Ref: TcpPort
      SourceSecurityGroupId:
        Ref: RDSAccessSecurityGroup
  DbSubnetGroup:
    Type: AWS::RDS::DBSubnetGroup
    Properties:
      DBSubnetGroupDescription:
        Fn::Join:
        - ''
        - - 'Groupe de Sous-réseau RDS pour '
          - Ref: AWS::StackName
      SubnetIds:
      - Ref: PrivateSubnet1
      - Ref: PrivateSubnet2
      - Ref: PrivateSubnet3
      Tags:
      - Key: Name
        Value:
          Ref: AWS::StackName
      - Key: Owner
        Value:
          Ref: Owner
  DbInstance:
    Type: AWS::RDS::DBInstance
    DeletionPolicy: Snapshot
    DependsOn:
    - DbSubnetGroup
    - RDSAccessSecurityGroup
    Properties:
      AllocatedStorage:
        Ref: AllocatedStorage
      AllowMajorVersionUpgrade: 'false'
      AutoMinorVersionUpgrade:
        Ref: AutoMinorVersionUpgrade
      BackupRetentionPeriod:
        Ref: BackupRetentionPeriod
      DBInstanceClass:
        Ref: InstanceType
      DBInstanceIdentifier:
        Ref: AWS::StackName
      DBSubnetGroupName:
        Ref: DbSubnetGroup
      Engine:
        Fn::FindInMap:
        - Settings
        - MySQL
        - Engine
      EngineVersion:
        Fn::FindInMap:
        - Settings
        - MySQL
        - Version
      MasterUsername:
        Ref: MasterUsername
      MasterUserPassword:
        Ref: MasterUserPassword
      MultiAZ:
        Ref: MultiAvailabilityZone
      Port:
        Ref: TcpPort
      PreferredBackupWindow:
        Ref: PreferredBackupWindow
      PreferredMaintenanceWindow:
        Ref: PreferredMaintenanceWindow
      PubliclyAccessible: 'false'
      StorageEncrypted: 'false'
      StorageType: gp2
      VPCSecurityGroups:
      - Ref: RDSAccessSecurityGroup
      Tags:
      - Key: Name
        Value:
          Ref: AWS::StackName
      - Key: Owner
        Value:
          Ref: Owner

Outputs:
  Owner:
    Description: Équipe ou Individu qui possède cette Formation.
    Value:
      Ref: Owner
  VPC:
    Description: VPC Utilisé
    Value:
      Ref: VPC
  RDSHostname:
    Description: Nom d'Hôte RDS
    Value:
      Fn::GetAtt:
      - DbInstance
      - Endpoint.Address
  RDSPort:
    Description: Port RDS
    Value:
      Fn::GetAtt:
      - DbInstance
      - Endpoint.Port
  DbSubnetGroup:
    Description: Groupe de Sous-réseau DB Créé.
    Value:
      Ref: DbSubnetGroup
  RDSAccessSecurityGroup:
    Description: Groupe de Sécurité d'Accès RDS Créé.
    Value:
      Ref: RDSAccessSecurityGroup
  PrivateSubnet1:
    Description: Déploiement du Sous-réseau Privé 1
    Value:
      Ref: PrivateSubnet1
  PrivateSubnet2:
    Description: Déploiement du Sous-réseau Privé 2
    Value:
      Ref: PrivateSubnet2
  PrivateSubnet3:
    Description: Déploiement du Sous-réseau Privé 3
    Value:
      Ref: PrivateSubnet3
  BackupRetentionPeriod:
    Description: Période de Rétention des Sauvegardes en Jours
    Value:
      Ref: BackupRetentionPeriod
  MultiAvailabilityZone:
    Description: Activer les Zones de Disponibilité Multiples ?
    Value:
      Ref: MultiAvailabilityZone
  SnapshotOnDelete:
    Description: Créer un Instantané à la Suppression ?
    Value:
      Ref: SnapshotOnDelete
  PreferredBackupWindow:
    Description: Fenêtre de Sauvegarde Préférée
    Value:
      Ref: PreferredBackupWindow
  PreferredMaintenanceWindow:
    Description: Fenêtre de Maintenance Préférée
    Value:
      Ref: PreferredMaintenanceWindow
  AllocatedStorage:
    Description: Stockage Alloué en Go
    Value:
      Ref: AllocatedStorage

Une fois que vous avez le modèle sur votre machine locale, allez à la console AWS et cliquez sur “Services” dans la barre de menu supérieure et recherchez “Cloudformation”.

Cloudformation

Vous verrez le tableau de bord principal de cloudformation comme suit. Cliquez sur le bouton “Créer une pile” pour créer une pile pour créer une instance RDS MySql.

Piles

Cliquez sur le bouton radio “Télécharger un fichier modèle” et sélectionnez le modèle que vous avez enregistré sur votre machine locale et cliquez sur le bouton “Suivant”.

Créer une pile Cloudformation

Spécifiez un nom de votre choix pour la pile et remplissez les détails requis, puis cliquez sur “Suivant” pour continuer.

Spécifier les détails de la pile

Mot de passe utilisateur principal

Vous pouvez fournir des balises à la pile Cloudformation qui peuvent être appliquées à l’instance RDS MySql qui sera créée par la pile. Cliquez sur “Suivant” pour continuer.

Balises

Faites défiler vers le bas et cliquez sur “Créer une pile” pour créer la pile.

Créer une pile

La création prendra un certain temps. Vous pouvez voir l’action en cours sous événements.

RDS MySQL

Pour voir l’état de l’instance RDS MySql en cours de création, cliquez sur “Services” et recherchez “RDS”.

RDS

Sur le tableau de bord principal, cliquez sur “Instances DB”.

Créer une base de données

Ici, vous pouvez voir que l’état de l’instance est “Modification”. Cela prendra un certain temps pour être créé et prêt à l’emploi.

Liste des bases de données RDS

Dans les événements de la pile Cloudformation, vous pouvez voir qu’après un certain temps, une fois que l’instance RDS MySql est créée, l’état est “CREATE_COMPLETE”

Journal d'action RDS

Dans la console RDS, vous pouvez maintenant voir que l’état est “Disponible”.

Base de données MySQL sur AWS

Pour voir plus de détails sur l’instance RDS MySql, cliquez sur l’instance RDS MySql –> Connectivité & Sécurité.

Pour vous connecter à l’instance RDS MySql, vous pouvez utiliser l’Endpoint fourni par l’instance.

Détails de la base de données

Une fois que l’instance n’est plus nécessaire, supprimez la pile Cloudformation depuis le tableau de bord principal de Cloudformation pour économiser sur les coûts.

Conclusion


Dans cet article, nous avons vu les étapes pour créer une instance RDS MySql en utilisant Cloudformation Stack.

Share: X/Twitter LinkedIn

Recevez de nouveaux articles dans votre boîte de réception.

Aucun spam. Désabonnez-vous à tout moment.