Используйте Cloudformation для создания экземпляра RDS MySql на AWS.
На этой странице
- Предварительные требования
- Что будем делать?
- Создайте экземпляр RDS MySql с помощью Cloudformation.
Служба реляционной базы данных AWS (RDS AWS) – это веб-служба, упрощающая настройку и эксплуатацию реляционной базы данных в облаке. Чтобы узнать больше о RDS, найдите статью «Как настроить экземпляр RDS MySql (реляционная база данных MySql) на AWS».
AWS CloudFormation позволяет нам использовать языки программирования (yaml/json) или простой текстовый файл для моделирования и предоставления всех ресурсов, необходимых для наших приложений. Это дает нам единый источник достоверной информации о наших ресурсах AWS.
В этой статье мы рассмотрим шаги по созданию экземпляра RDS MySql с использованием стека Cloudformation.
Предпосылки
- Аккаунт AWS (создайте, если у вас его нет).
- Основное понимание стека Cloudformation.
- Основное понимание экземпляра RDS MySql (реляционная база данных MySql) на AWS.
Что мы будем делать?
- Войдите в AWS.
- Создание экземпляра RDS MySql с помощью стека Cloudformation
Войти в АВС
- Нажмите здесь, чтобы перейти на страницу входа в AWS.
Когда мы перейдем по приведенной выше ссылке, мы увидим следующую веб-страницу, где нам необходимо войти в систему, используя наши данные для входа.
После успешного входа в AWS мы увидим главную консоль со всеми перечисленными сервисами.
Создайте экземпляр RDS MySql с помощью Cloudformation.
Прежде чем мы создадим экземпляр с помощью Cloudformation Stack, скопируйте код из следующего блока или загрузите шаблон отсюда и сохраните его на локальном компьютере.
--- AWSTemplateFormatVersion: '2010-09-09' Description: This stack creates an RDS MySql 5.7 Instance Parameters: Owner: Description: Enter the Name of the owner for this Stack. Type: String Default: Name VPC: Description: Select VPC form the available VPCs in your account. Type: AWS::EC2::VPC::Id PrivateSubnet1: Description: Select Private Subnet 1. Type: AWS::EC2::Subnet::Id PrivateSubnet2: Description: Select Private Subnet 2. Type: AWS::EC2::Subnet::Id PrivateSubnet3: Description: Select Private Subnet 3. Type: AWS::EC2::Subnet::Id MasterUsername: Description: Database administration name. Type: String Default: rdsroot MasterUserPassword: NoEcho: 'true' Description: Database administration password. Type: String MinLength: '8' AllowedPattern: "[a-zA-Z0-9!?]*" ConstraintDescription: Must only contain upper and lowercase letters and numbers BackupRetentionPeriod: Description: Enter Backup Retention Period in Days. Type: Number Default: '5' MultiAvailabilityZone: Description: Do you want to Enable Multi Availability Zones? Type: String Default: 'true' AllowedValues: - 'true' - 'false' TcpPort: Description: Enter RDS Listening TCP Port number. Type: Number Default: '3306' PreferredBackupWindow: Description: Enter Preferred Backup Window Time. Type: String Default: 15:00-17:00 PreferredMaintenanceWindow: Description: Enter Preferred Maintenance Window Time. Type: String Default: Sun:18:00-Sun:22:00 AllocatedStorage: Default: '15' Description: Enter the size of the database (Gb) Type: Number MinValue: '5' MaxValue: '6144' ConstraintDescription: Must be between 5-6144 SnapshotOnDelete: Description: Do you want to create a Snapshot on instance delete? Type: String Default: 'true' AllowedValues: - 'true' - 'false' AutoMinorVersionUpgrade: Description: Do you want to allow automatic minor version upgrade? Type: String Default: 'true' AllowedValues: - 'true' - 'false' InstanceType: Description: Select Instance Type. Type: String Default: db.t2.micro ConstraintDescription: Must be a valid EC2 instance type. Mappings: Settings: MySQL: Engine: MySQL Version: '5.7' Conditions: ConfigureSnapshotOnDelete: Fn::Equals: - Ref: SnapshotOnDelete - 'true' Metadata: AWS::CloudFormation::Interface: ParameterGroups: - Label: default: Ownership Parameters: - Owner - Label: default: Network Configuration Parameters: - VPC - PrivateSubnet1 - PrivateSubnet2 - PrivateSubnet3 - Label: default: RDS Configuration Parameters: - InstanceType - MasterUsername - MasterUserPassword - BackupRetentionPeriod - PreferredBackupWindow - PreferredMaintenanceWindow - SnapshotOnDelete - AllocatedStorage - AutoMinorVersionUpgrade - TcpPort - MultiAvailabilityZone ParameterLabels: Owner: default: Team or Individual Owner InstanceType: default: Instance Type PrivateSubnet1: default: Private Subnet 1 PrivateSubnet2: default: Private Subnet 2 PrivateSubnet3: default: Private Subnet 3 MasterUsername: default: Master Username MasterUserPassword: default: Master User Password BackupRetentionPeriod: default: Backup Retention Period PreferredBackupWindow: default: Preferred Backup Window PreferredMaintenanceWindow: default: Preferred Maintenance Window AllocatedStorage: default: Allocated Storage AutoMinorVersionUpgrade: default: Auto Minor Version Upgrade TcpPort: default: TCP Port MultiAvailabilityZone: default: Multi Availability Zone? SnapshotOnDelete: default: Snapshot On Delete? Resources: RDSAccessSecurityGroup: Type: AWS::EC2::SecurityGroup Properties: GroupDescription: Instance to RDS Access 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 Subnet Group for ' - 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: Team or Individual that Owns this Formation. Value: Ref: Owner VPC: Description: VPC Used Value: Ref: VPC RDSHostname: Description: RDS Hostname Value: Fn::GetAtt: - DbInstance - Endpoint.Address RDSPort: Description: RDS Port Value: Fn::GetAtt: - DbInstance - Endpoint.Port DbSubnetGroup: Description: DB Subnet Group Created. Value: Ref: DbSubnetGroup RDSAccessSecurityGroup: Description: RDS Access Security Group Created. Value: Ref: RDSAccessSecurityGroup PrivateSubnet1: Description: Private Subnet 1 Deployment Value: Ref: PrivateSubnet1 PrivateSubnet2: Description: Private Subnet 2 Deployment Value: Ref: PrivateSubnet2 PrivateSubnet3: Description: Private Subnet 3 Deployment Value: Ref: PrivateSubnet3 BackupRetentionPeriod: Description: Backup Retention Period in Days Value: Ref: BackupRetentionPeriod MultiAvailabilityZone: Description: Enable Multi Availability Zones? Value: Ref: MultiAvailabilityZone SnapshotOnDelete: Description: Create Snapshot on Delete? Value: Ref: SnapshotOnDelete PreferredBackupWindow: Description: Preferred Backup Window Value: Ref: PreferredBackupWindow PreferredMaintenanceWindow: Description: Preferred Maintenance Window Value: Ref: PreferredMaintenanceWindow AllocatedStorage: Description: Allocated Storage in GB Value: Ref: AllocatedStorage
Когда у вас есть шаблон на вашем локальном компьютере, перейдите в консоль AWS и нажмите «Сервисы» в верхней строке меню и найдите «Cloudformation».
Вы увидите основную панель управления cloudformation следующим образом. Нажмите кнопку «Создать стек», чтобы создать стек для создания экземпляра RDS MySql.
Нажмите переключатель «Загрузить файл шаблона», выберите шаблон, который вы сохранили на локальном компьютере, и нажмите кнопку «Далее».
Укажите имя по вашему выбору для стека, заполните необходимые данные и нажмите «Далее», чтобы продолжить.
Вы можете предоставить теги для стека Cloudformation, которые можно применить к экземпляру RDS MySql, который будет создан стеком. Нажмите \Далее\, чтобы продолжить.
Прокрутите вниз и нажмите «Создать стопку», чтобы создать стопку.
Создание займет некоторое время. Вы можете увидеть действия, предпринимаемые под событиями.
Чтобы увидеть статус создаваемого экземпляра RDS MySql, нажмите «Службы» и найдите «RDS».
На главной панели нажмите \Экземпляры БД\.
Здесь вы можете видеть, что статус экземпляра — «Изменение». Это займет некоторое время, чтобы быть созданным и готовым к использованию.
В событиях стека Cloudformation вы можете видеть, что через некоторое время после создания экземпляра MySql RDS статус становится \CREATE_COMPLETE\.
В консоли RDS теперь вы можете видеть, что статус «Доступно».
Чтобы просмотреть дополнительные сведения об экземпляре RDS MySql, щелкните Экземпляр RDS MySql --> Подключение и безопасность.
Чтобы подключиться к экземпляру RDS MySql, вы можете использовать конечную точку, предоставленную экземпляром.
Когда экземпляр больше не нужен, удалите стек Cloudformation с главной панели инструментов Cloudformation, чтобы сэкономить на стоимости.
Заключение
В этой статье мы рассмотрели шаги по созданию экземпляра RDS MySql с использованием стека Cloudformation.