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.