AWS RDS · 6 min read · Feb 04, 2026

Используйте Cloudformation для создания экземпляра RDS MySql на AWS

Служба реляционных баз данных AWS (RDS AWS) — это веб-сервис, который упрощает настройку и управление реляционной базой данных в облаке. Чтобы узнать больше о RDS, найдите статью “Как настроить экземпляр RDS MySql (реляционная база данных MySql) на AWS”.

AWS CloudFormation позволяет нам использовать языки программирования (yaml/json) или простой текстовый файл для моделирования и предоставления всех ресурсов, необходимых для наших приложений. Это дает нам единый источник правды для наших ресурсов AWS.

В этой статье мы рассмотрим шаги по созданию экземпляра RDS MySql с использованием Cloudformation Stack.

Предварительные требования

  1. Учетная запись AWS (создайте, если у вас ее нет).
  2. Базовое понимание Cloudformation Stack.
  3. Базовое понимание экземпляра RDS MySql (реляционная база данных MySql) на AWS.

Что мы будем делать?

  1. Войти в AWS.
  2. Создать экземпляр RDS MySql с использованием Cloudformation Stack

Вход в AWS

  1. Нажмите здесь, чтобы перейти на страницу входа в AWS.

Когда мы перейдем по вышеуказанной ссылке, мы увидим веб-страницу, на которой нам нужно будет войти, используя наши учетные данные.

Вход в AWS

После успешного входа в AWS мы увидим главную консоль со всеми перечисленными службами.

Консоль управления AWS

Создание экземпляра RDS MySql с использованием Cloudformation.

Перед тем как создать экземпляр с использованием Cloudformation Stack, скопируйте код из следующего блока или загрузите шаблон отсюда и сохраните его на своем локальном компьютере.

---
AWSTemplateFormatVersion: '2010-09-09'
Description: Этот стек создает экземпляр RDS MySql 5.7
Parameters:
  Owner:
    Description: Введите имя владельца для этого стека.
    Type: String
    Default: Name
  VPC:
    Description: Выберите VPC из доступных VPC в вашей учетной записи.
    Type: AWS::EC2::VPC::Id
  PrivateSubnet1:
    Description: Выберите частную подсеть 1.
    Type: AWS::EC2::Subnet::Id
  PrivateSubnet2:
    Description: Выберите частную подсеть 2.
    Type: AWS::EC2::Subnet::Id
  PrivateSubnet3:
    Description: Выберите частную подсеть 3.
    Type: AWS::EC2::Subnet::Id
  MasterUsername:
    Description: Имя администратора базы данных.
    Type: String
    Default: rdsroot
  MasterUserPassword:
    NoEcho: 'true'
    Description: Пароль администратора базы данных.
    Type: String
    MinLength: '8'
    AllowedPattern: "[a-zA-Z0-9!?]*"
    ConstraintDescription: Должен содержать только строчные и прописные буквы и цифры
  BackupRetentionPeriod:
    Description: Введите период хранения резервных копий в днях.
    Type: Number
    Default: '5'
  MultiAvailabilityZone:
    Description: Хотите ли вы включить несколько зон доступности?
    Type: String
    Default: 'true'
    AllowedValues:
    - 'true'
    - 'false'
  TcpPort:
    Description: Введите номер порта TCP для прослушивания RDS.
    Type: Number
    Default: '3306'
  PreferredBackupWindow:
    Description: Введите предпочитаемое время резервного копирования.
    Type: String
    Default: 15:00-17:00
  PreferredMaintenanceWindow:
    Description: Введите предпочитаемое время обслуживания.
    Type: String
    Default: Sun:18:00-Sun:22:00
  AllocatedStorage:
    Default: '15'
    Description: Введите размер базы данных (Гб)
    Type: Number
    MinValue: '5'
    MaxValue: '6144'
    ConstraintDescription: Должен быть в диапазоне от 5 до 6144
  SnapshotOnDelete:
    Description: Хотите ли вы создать снимок при удалении экземпляра?
    Type: String
    Default: 'true'
    AllowedValues:
    - 'true'
    - 'false'
  AutoMinorVersionUpgrade:
    Description: Хотите ли вы разрешить автоматическое обновление незначительной версии?
    Type: String
    Default: 'true'
    AllowedValues:
    - 'true'
    - 'false'
  InstanceType:
    Description: Выберите тип экземпляра.
    Type: String
    Default: db.t2.micro
    ConstraintDescription: Должен быть допустимый тип экземпляра EC2.
Mappings:
  Settings:
    MySQL:
      Engine: MySQL
      Version: '5.7'
Conditions:
  ConfigureSnapshotOnDelete:
    Fn::Equals:
    - Ref: SnapshotOnDelete
    - 'true'

Metadata:
  AWS::CloudFormation::Interface:
    ParameterGroups:
    - Label:
        default: Владение
      Parameters:
      - Owner
    - Label:
        default: Конфигурация сети
      Parameters:
      - VPC
      - PrivateSubnet1
      - PrivateSubnet2
      - PrivateSubnet3
    - Label:
        default: Конфигурация RDS
      Parameters:
      - InstanceType
      - MasterUsername
      - MasterUserPassword
      - BackupRetentionPeriod
      - PreferredBackupWindow
      - PreferredMaintenanceWindow
      - SnapshotOnDelete
      - AllocatedStorage
      - AutoMinorVersionUpgrade
      - TcpPort
      - MultiAvailabilityZone
    ParameterLabels:
      Owner:
        default: Команда или индивидуальный владелец
      InstanceType:
        default: Тип экземпляра
      PrivateSubnet1:
        default: Частная подсеть 1
      PrivateSubnet2:
        default: Частная подсеть 2
      PrivateSubnet3:
        default: Частная подсеть 3
      MasterUsername:
        default: Имя администратора
      MasterUserPassword:
        default: Пароль администратора
      BackupRetentionPeriod:
        default: Период хранения резервных копий
      PreferredBackupWindow:
        default: Предпочитаемое время резервного копирования
      PreferredMaintenanceWindow:
        default: Предпочитаемое время обслуживания
      AllocatedStorage:
        default: Выделенное хранилище
      AutoMinorVersionUpgrade:
        default: Автоматическое обновление незначительной версии
      TcpPort:
        default: Порт TCP
      MultiAvailabilityZone:
        default: Несколько зон доступности?
      SnapshotOnDelete:
        default: Снимок при удалении?

Resources:
  RDSAccessSecurityGroup:
    Type: AWS::EC2::SecurityGroup
    Properties:
      GroupDescription: Доступ к экземпляру 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:
        - ''
        - - 'Группа подсетей RDS для '
          - 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: Команда или индивидуум, владеющий этой формацией.
    Value:
      Ref: Owner
  VPC:
    Description: Используемый VPC
    Value:
      Ref: VPC
  RDSHostname:
    Description: Имя хоста RDS
    Value:
      Fn::GetAtt:
      - DbInstance
      - Endpoint.Address
  RDSPort:
    Description: Порт RDS
    Value:
      Fn::GetAtt:
      - DbInstance
      - Endpoint.Port
  DbSubnetGroup:
    Description: Созданная группа подсетей БД.
    Value:
      Ref: DbSubnetGroup
  RDSAccessSecurityGroup:
    Description: Созданная группа безопасности доступа RDS.
    Value:
      Ref: RDSAccessSecurityGroup
  PrivateSubnet1:
    Description: Развертывание частной подсети 1
    Value:
      Ref: PrivateSubnet1
  PrivateSubnet2:
    Description: Развертывание частной подсети 2
    Value:
      Ref: PrivateSubnet2
  PrivateSubnet3:
    Description: Развертывание частной подсети 3
    Value:
      Ref: PrivateSubnet3
  BackupRetentionPeriod:
    Description: Период хранения резервных копий в днях
    Value:
      Ref: BackupRetentionPeriod
  MultiAvailabilityZone:
    Description: Включить несколько зон доступности?
    Value:
      Ref: MultiAvailabilityZone
  SnapshotOnDelete:
    Description: Создать снимок при удалении?
    Value:
      Ref: SnapshotOnDelete
  PreferredBackupWindow:
    Description: Предпочитаемое время резервного копирования
    Value:
      Ref: PreferredBackupWindow
  PreferredMaintenanceWindow:
    Description: Предпочитаемое время обслуживания
    Value:
      Ref: PreferredMaintenanceWindow
  AllocatedStorage:
    Description: Выделенное хранилище в ГБ
    Value:
      Ref: AllocatedStorage

После того как у вас есть шаблон на вашем локальном компьютере, перейдите в консоль AWS и нажмите на “Службы” в верхнем меню и найдите “Cloudformation”.

Cloudformation

Вы увидите главную панель управления Cloudformation, как показано ниже. Нажмите кнопку “Создать стек”, чтобы создать стек для создания экземпляра RDS MySql.

Стек

Нажмите на радиокнопку “Загрузить файл шаблона” и выберите шаблон, который вы сохранили на своем локальном компьютере, и нажмите кнопку “Далее”.

Создать стек Cloudformation

Укажите имя по вашему выбору для стека и заполните необходимые данные, затем нажмите “Далее”, чтобы продолжить.

Укажите детали стека

Пароль администратора

Вы можете предоставить теги для стека Cloudformation, которые могут быть применены к экземпляру RDS MySql, который будет создан стеком. Нажмите “Далее”, чтобы продолжить.

Теги

Прокрутите вниз и нажмите “Создать стек”, чтобы создать стек.

Создать стек

Создание займет некоторое время. Вы можете видеть выполняемые действия в разделе событий.

RDS MySQL

Чтобы увидеть статус создаваемого экземпляра RDS MySql, нажмите на “Службы” и найдите “RDS”.

RDS

На главной панели нажмите на “DB Instances”.

Создать базу данных

Здесь вы можете увидеть, что статус экземпляра “Изменение”. Это займет некоторое время, чтобы создать и подготовить к использованию.

Список баз данных RDS

В событиях стека Cloudformation вы можете увидеть, что через некоторое время, после создания экземпляра RDS MySql, статус будет “CREATE_COMPLETE”

Журнал действий RDS

В консоли RDS теперь вы можете увидеть, что статус “Доступен”.

База данных MySQL на AWS

Чтобы увидеть больше деталей о экземпляре RDS MySql, нажмите на экземпляр RDS MySql –> Подключение и безопасность.

Чтобы подключиться к экземпляру RDS MySql, вы можете использовать конечную точку, предоставленную экземпляром.

Детали базы данных

Когда экземпляр больше не нужен, удалите стек Cloudformation из главной панели Cloudformation, чтобы сэкономить на расходах.

Заключение


В этой статье мы рассмотрели шаги по созданию экземпляра RDS MySql с использованием Cloudformation Stack.

Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.