Cloudformation verwenden, um eine RDS MySql-Instanz auf AWS zu erstellen
Der AWS Relational Database Service (RDS AWS) ist ein Webservice, der es einfacher macht, eine relationale Datenbank in der Cloud einzurichten und zu betreiben. Um mehr über RDS zu erfahren, suche nach dem Artikel „Wie richte ich eine RDS MySql (Relationale Datenbank MySql) Instanz auf AWS ein“.
Mit AWS CloudFormation können wir Programmiersprachen (yaml/json) oder eine einfache Textdatei verwenden, um alle für unsere Anwendungen benötigten Ressourcen zu modellieren und bereitzustellen. So haben wir eine einzige Quelle der Wahrheit für unsere AWS-Ressourcen.
In diesem Artikel zeigen wir dir, wie du eine RDS MySql Instanz mit Cloudformation Stack erstellst.
Vorraussetzungen
- AWS-Konto (Erstelle wenn du noch keins hast).
- Grundlegendes Verständnis von Cloudformation Stack.
- Grundlegendes Verständnis derRDS MySql (Relation Database MySql) Instanz auf AWS.
Was werden wir tun?
- Melde dich bei AWS an.
- Erstelle eine RDS MySql-Instanz mit Cloudformation Stack
Anmelden bei AWS
- Klicke auf hier um zur AWS-Anmeldeseite zu gelangen.
Wenn wir den obigen Link anklicken, sehen wir die folgende Webseite, 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 Services.
Erstelle eine RDS MySql-Instanz mit Cloudformation.
Bevor wir eine Instanz mit Cloudformation Stack erstellen, kopiere den Code aus dem folgenden Block oder lade die Vorlage vonhier herunter und speichere sie auf deinem lokalen Rechner.
--- 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 du die Vorlage auf deinem lokalen Rechner hast, gehst du zur AWS-Konsole und klickst in der oberen Menüleiste auf „Services“ und suchst nach „Cloudformation“.
Das Haupt-Dashboard von Cloudformation siehst du wie folgt. Klicke auf die Schaltfläche „Stack erstellen“, um einen Stack für eine RDS MySql Instanz zu erstellen.
Klicke auf das Optionsfeld „Vorlagendatei hochladen“, wähle die Vorlage aus, die du auf deinem lokalen Rechner gespeichert hast, und klicke auf „Weiter“.
Gib einen Namen deiner Wahl für den Stack an, fülle die erforderlichen Details aus und klicke auf „Weiter“, um fortzufahren.
Du kannst dem Cloudformation Stack Tags geben, die auf die RDS MySql Instanz angewendet werden können, die vom Stack erstellt wird. Klicke auf „Weiter“, um fortzufahren.
Scrolle nach unten und klicke auf „Stack erstellen“, um den Stack zu erstellen.
Die Erstellung wird einige Zeit in Anspruch nehmen. Unter „Ereignisse“ kannst du sehen, welche Aktionen durchgeführt werden.
Um den Status der RDS MySql-Instanz zu sehen, die gerade erstellt wird, klicke auf „Dienste“ und suche nach „RDS“.
Im Haupt-Dashboard klickst du auf „DB-Instanzen“.
Hier kannst du sehen, dass der Status der Instanz „Modifying“ ist. Es wird einige Zeit dauern, bis sie erstellt und einsatzbereit ist.
In den Cloudformation Stack-Ereignissen kannst du sehen, dass nach einiger Zeit, sobald die RDS MySql-Instanz erstellt wurde, der Status „CREATE_COMPLETE“ lautet.
In der RDS-Konsole kannst du jetzt sehen, dass der Status „Verfügbar“ ist.
Um mehr Details über die RDS MySql-Instanz zu erfahren, klicke auf RDS MySql-Instanz –> Konnektivität & Sicherheit.
Um dich mit der RDS MySql-Instanz zu verbinden, kannst du den von der Instanz bereitgestellten Endpunkt verwenden.
Sobald die Instanz nicht mehr benötigt wird, löschst du den Cloudformation Stack aus dem Cloudformation Main Dashboard, um Kosten zu sparen.
Fazit
In diesem Artikel haben wir die Schritte zur Erstellung einer RDS MySql-Instanz mit Cloudformation Stack gesehen.