Layanan Database Relasional AWS (RDS AWS) adalah layanan web yang mempermudah penyiapan &pengoperasian database relasional di cloud. Untuk memahami lebih lanjut tentang RDS, cari artikel "Cara menyiapkan instans RDS MySql (Relation Database MySql ) di AWS".
AWS CloudFormation memungkinkan kami menggunakan bahasa pemrograman (yaml/json) atau file teks sederhana untuk memodelkan dan menyediakan semua sumber daya yang diperlukan untuk aplikasi kami. Ini memberi kami satu sumber kebenaran untuk sumber daya AWS kami.
Pada artikel ini, kita akan melihat langkah-langkah untuk membuat Instance MySql RDS menggunakan Cloudformation Stack.
Prasyarat
- Akun AWS (Buat jika Anda belum memilikinya).
- Pemahaman dasar tentang Cloudformation Stack.
- Pemahaman dasar tentang instance RDS MySql (Relation Database MySql ) di AWS.
Apa yang akan kita lakukan?
- Masuk ke AWS.
- Buat Instance MySql RDS menggunakan Cloudformation Stack
Masuk ke AWS
- Klik di sini untuk membuka Halaman Login AWS.
Ketika kita menekan link di atas, kita akan melihat halaman web sebagai berikut dimana kita diharuskan untuk login menggunakan detail login kita.

Setelah kita berhasil masuk ke AWS, kita akan melihat konsol utama dengan semua layanan yang terdaftar.

Buat Instance MySql RDS menggunakan Cloudformation.
Sebelum membuat instance menggunakan Cloudformation Stack, salin kode dari blok berikut atau unduh template dari sini dan simpan di komputer lokal Anda.
---
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
Setelah Anda memiliki template di mesin lokal Anda, buka konsol AWS dan klik "Layanan" dari bilah menu atas dan cari "Cloudformation".

Anda akan melihat dasbor cloudformation utama sebagai berikut. Klik tombol "Buat Stack" untuk membuat tumpukan guna membuat Instance MySql RDS.

Klik tombol radio "Unggah file template" dan pilih template yang telah Anda simpan dari mesin lokal Anda dan klik tombol "Berikutnya".

Tentukan nama pilihan Anda ke tumpukan dan isi detail yang diperlukan dan klik "Berikutnya" untuk melanjutkan lebih jauh.


Anda dapat memberikan tag ke Cloudformation Stack yang dapat diterapkan ke Instance MySql RDS yang akan dibuat oleh stack. Klik "Berikutnya" untuk melanjutkan.

Gulir ke bawah dan klik "Buat tumpukan" untuk membuat tumpukan.

Pembuatannya akan memakan waktu. Anda dapat melihat tindakan yang diambil di bawah acara.

Untuk melihat status instans RDS MySql yang sedang dibuat, klik "Layanan" dan cari "RDS".

Di dasbor utama, klik "Instance DB".

Di sini, Anda dapat melihat bahwa status instance adalah "Modifying". Ini akan memakan waktu untuk dibuat dan siap digunakan.

Dalam acara Cloudformation Stack, Anda dapat melihat bahwa setelah beberapa waktu, setelah Instance MySql RDS dibuat, statusnya adalah "CREATE_COMPLETE"

Di Konsol RDS, sekarang Anda dapat melihat bahwa statusnya adalah "Tersedia".

Untuk melihat detail selengkapnya tentang Instans MySql RDS, klik Instans MySql RDS --> Konektivitas &Keamanan.
Untuk terhubung ke Instance MySql RDS, Anda dapat menggunakan Endpoint yang disediakan oleh instance.

Setelah instans tidak diperlukan lagi, hapus Cloudformation Stack dari Dasbor Utama Cloudformation untuk menghemat biaya.
Kesimpulan
Dalam artikel ini, kita melihat langkah-langkah untuk membuat instance RDS MySql menggunakan Cloudformation Stack.