Der AWS Relational Database Service (RDS AWS) ist ein Webdienst, der die Einrichtung und den Betrieb einer relationalen Datenbank in der Cloud vereinfacht. Um mehr über RDS zu erfahren, suchen Sie nach dem Artikel „How to setup an RDS MySql (Relation Database MySql ) instance on AWS“.
AWS CloudFormation ermöglicht es uns, Programmiersprachen (yaml/json) oder eine einfache Textdatei zu verwenden, um alle für unsere Anwendungen erforderlichen Ressourcen zu modellieren und bereitzustellen. Dadurch haben wir eine zentrale Informationsquelle für unsere AWS-Ressourcen.
In diesem Artikel sehen wir die Schritte zum Erstellen einer RDS MySql-Instanz mit Cloudformation Stack.
Voraussetzungen
- AWS-Konto (erstellen, falls Sie noch keins haben).
- Grundlegendes Verständnis von Cloudformation Stack.
- Grundlegendes Verständnis der RDS MySql (Relation Database MySql)-Instanz auf AWS.
Was werden wir tun?
- Melden Sie sich bei AWS an.
- Erstellen Sie eine RDS-MySql-Instanz mit Cloudformation Stack
Melden Sie sich bei AWS an
- Klicken Sie hier, um zur AWS-Anmeldeseite zu gelangen.
Wenn wir auf den obigen Link klicken, sehen wir eine Webseite wie folgt, auf der wir uns mit unseren Anmeldedaten anmelden müssen.

Sobald wir uns erfolgreich bei AWS angemeldet haben, sehen wir die Hauptkonsole mit allen aufgelisteten Diensten.

Erstellen Sie eine RDS MySql-Instanz mit Cloudformation.
Bevor wir eine Instanz mit Cloudformation Stack erstellen, kopieren Sie den Code aus dem folgenden Block oder laden Sie die Vorlage hier herunter und speichern Sie sie auf Ihrem lokalen Computer.
---
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
Sobald Sie die Vorlage auf Ihrem lokalen Computer haben, gehen Sie zur AWS-Konsole und klicken Sie in der oberen Menüleiste auf „Services“ und suchen Sie nach „Cloudformation“.

Sie sehen das Haupt-Cloudformations-Dashboard wie folgt. Klicken Sie auf die Schaltfläche "Stack erstellen", um einen Stack zu erstellen und eine RDS MySql-Instanz zu erstellen.

Klicken Sie auf das Optionsfeld "Vorlagendatei hochladen", wählen Sie die Vorlage aus, die Sie auf Ihrem lokalen Computer gespeichert haben, und klicken Sie auf die Schaltfläche "Weiter".

Geben Sie dem Stapel einen Namen Ihrer Wahl und füllen Sie die erforderlichen Details aus und klicken Sie auf "Weiter", um fortzufahren.


Sie können die Tags für Cloudformation Stack bereitstellen, die auf die RDS MySql-Instanz angewendet werden können, die vom Stack erstellt wird. Klicken Sie auf "Weiter", um fortzufahren.

Scrollen Sie nach unten und klicken Sie auf "Stapel erstellen", um den Stapel zu erstellen.

Die Erstellung wird einige Zeit in Anspruch nehmen. Sie können die durchgeführten Aktionen unter Ereignisse sehen.

Um den Status der erstellten RDS MySql-Instanz anzuzeigen, klicken Sie auf „Dienste“ und suchen Sie nach „RDS“.

Klicken Sie im Haupt-Dashboard auf „DB-Instanzen“.

Hier sehen Sie, dass der Status der Instanz "Modifying" ist. Es wird einige Zeit dauern, bis dies erstellt und einsatzbereit ist.

In den Cloudformation Stack-Ereignissen können Sie sehen, dass nach einiger Zeit, sobald die RDS MySql-Instanz erstellt wurde, der Status "CREATE_COMPLETE" lautet

In der RDS-Konsole können Sie jetzt sehen, dass der Status "Verfügbar" ist.

Um weitere Details zur RDS MySql-Instanz anzuzeigen, klicken Sie auf die RDS MySql-Instanz --> Konnektivität und Sicherheit.
Um eine Verbindung zur RDS-MySql-Instanz herzustellen, können Sie den von der Instanz bereitgestellten Endpunkt verwenden.

Sobald die Instanz nicht mehr benötigt wird, löschen Sie den Cloudformation Stack aus dem Cloudformation Main Dashboard, um Kosten zu sparen.
Schlussfolgerung
In diesem Artikel haben wir die Schritte zum Erstellen einer RDS MySql-Instanz mit Cloudformation Stack gesehen.