Sử dụng Cloudformation để tạo RDS MySql Instance trên AWS

theanh

Administrator
Nhân viên
Dịch vụ cơ sở dữ liệu quan hệ AWS (RDS AWS) là một dịch vụ web giúp thiết lập & vận hành cơ sở dữ liệu quan hệ trên đám mây dễ dàng hơn. Để hiểu thêm về RDS, hãy tìm kiếm bài viết "Cách thiết lập phiên bản RDS MySql (Cơ sở dữ liệu quan hệ MySql) trên AWS".

AWS CloudFormation cho phép chúng ta sử dụng ngôn ngữ lập trình (yaml/json) hoặc tệp văn bản đơn giản để mô hình hóa và cung cấp tất cả các tài nguyên cần thiết cho ứng dụng của chúng ta. Điều này cung cấp cho chúng ta một nguồn duy nhất đáng tin cậy cho các tài nguyên AWS của mình.

Trong bài viết này, chúng ta sẽ xem các bước để tạo một phiên bản RDS MySql bằng Cloudformation Stack.

Điều kiện tiên quyết​

  1. Tài khoản AWS (Tạo nếu bạn chưa có).
  2. Hiểu biết cơ bản về Cloudformation Stack.
  3. Hiểu biết cơ bản về phiên bản RDS MySql (Cơ sở dữ liệu quan hệ MySql) trên AWS.

Chúng ta sẽ làm gì?​

  1. Đăng nhập vào AWS.
  2. Tạo một phiên bản RDS MySql bằng Cloudformation Stack

Đăng nhập vào AWS

  1. Nhấp vào đây để đến Trang đăng nhập AWS.
Khi nhấp vào liên kết trên, chúng ta sẽ thấy một trang web như sau, tại đó chúng ta được yêu cầu đăng nhập bằng thông tin đăng nhập của mình.



Sau khi đăng nhập thành công vào AWS, chúng ta sẽ thấy bảng điều khiển chính với tất cả các dịch vụ được liệt kê.




Tạo một RDS MySql Instance bằng Cloudformation.​

Trước khi tạo một instance bằng Cloudformation Stack, hãy sao chép mã từ khối sau hoặc tải xuống mẫu từtại đâyvà lưu vào máy cục bộ của bạn.
Mã:
---AWSTemplateFormatVersion: '2010-09-09'Mô tả: Ngăn xếp này tạo một Phiên bản RDS MySql 5.7Tham số: Chủ sở hữu: Mô tả: Nhập Tên chủ sở hữu cho Ngăn xếp này. Kiểu: Chuỗi Mặc định: Tên VPC: Mô tả: Chọn biểu mẫu VPC có sẵn trong tài khoản của bạn. Kiểu: AWS::EC2::VPC::Id PrivateSubnet1: Mô tả: Chọn Mạng con riêng 1. Kiểu: AWS::EC2::Subnet::Id PrivateSubnet2: Mô tả: Chọn Mạng con riêng 2. Kiểu: AWS::EC2::Subnet::Id PrivateSubnet3: Mô tả: Chọn Mạng con riêng 3. Kiểu: AWS::EC2::Subnet::Id MasterUsername: Mô tả: Tên quản trị cơ sở dữ liệu. Kiểu: Chuỗi Mặc định: rdsroot MasterUserPassword: NoEcho: 'true' Mô tả: Mật khẩu quản trị cơ sở dữ liệu. Type: String MinLength: '8' AllowedPattern: "[a-zA-Z0-9!?]*" ConstraintDescription: Chỉ được chứa chữ cái viết hoa, viết thường và số BackupRetentionPeriod: Mô tả: Nhập Thời gian lưu giữ sao lưu tính theo Ngày. Type: Number Mặc định: '5' MultiAvailabilityZone: Mô tả: Bạn có muốn bật Nhiều vùng khả dụng không? Type: String Mặc định: 'true' AllowedValues: - 'true' - 'false' TcpPort: Mô tả: Nhập số Cổng TCP RDS Listening. Type: Number Mặc định: '3306' PreferredBackupWindow: Mô tả: Nhập Thời gian cửa sổ sao lưu ưu tiên. Type: String Mặc định: 15:00-17:00 PreferredMaintenanceWindow: Mô tả: Nhập Thời gian cửa sổ bảo trì ưu tiên. Type: String Mặc định: Sun:18:00-Sun:22:00 AllocatedStorage: Mặc định: '15' Mô tả: Nhập kích thước của cơ sở dữ liệu (Gb) Type: Number MinValue: '5' MaxValue: '6144' ConstraintDescription: Phải nằm trong khoảng từ 5-6144 SnapshotOnDelete: Mô tả: Bạn có muốn tạo Snapshot khi xóa phiên bản không? Type: String Mặc định: 'true' AllowedValues: - 'true' - 'false' AutoMinorVersionUpgrade: Mô tả: Bạn có muốn cho phép nâng cấp phiên bản phụ tự động không? Type: String Mặc định: 'true' AllowedValues: - 'true' - 'false' InstanceType: Mô tả: Chọn Instance Type. Type: String Mặc định: db.t2.micro ConstraintDescription: Phải là loại phiên bản EC2 hợp lệ.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: mặc định: Private Subnet 2 PrivateSubnet3: mặc định: Private Subnet 3 MasterUsername: mặc định: Master Username MasterUserPassword: mặc định: Master User Password BackupRetentionPeriod: mặc định: Backup Retention Period PreferredBackupWindow: mặc định: Preferred Backup Window PreferredMaintenanceWindow: mặc định: Preferred Maintenance Window AllocatedStorage: mặc định: Allocated Storage AutoMinorVersionUpgrade: mặc định: Auto Minor Version Upgrade TcpPort: mặc định: TCP Port MultiAvailabilityZone: mặc định: Multi Availability Zone? SnapshotOnDelete: mặc định: Snapshot On Delete?Tài nguyên: RDSAccessSecurityGroup: Kiểu: AWS::EC2::SecurityGroup Thuộc tính: GroupDescription: Phiên bản tới RDS Access VpcId: Tham chiếu: Thẻ VPC: - Khóa: Tên Giá trị: Fn::Join: - '' - - Tham chiếu: AWS::StackName - "-rds" - Khóa: Chủ sở hữu Giá trị: Tham chiếu: Chủ sở hữu AccessSecurityGroupIngress: Kiểu: AWS::EC2::SecurityGroupIngress DependsOn: Thuộc tính RDSAccessSecurityGroup: GroupId: Tham chiếu: RDSAccessSecurityGroup IpProtocol: tcp FromPort: Tham chiếu: TcpPort ToPort: Tham chiếu: TcpPort SourceSecurityGroupId: Tham chiếu: RDSAccessSecurityGroup DbSubnetGroup: Kiểu: AWS::RDS::DBSubnetGroup Thuộc tính: DBSubnetGroupDescription: Fn::Join: - '' - - 'Nhóm mạng con RDS cho ' - Tham chiếu: AWS::StackName SubnetIds: - Tham chiếu: PrivateSubnet1 - Tham chiếu: PrivateSubnet2 - Tham chiếu: PrivateSubnet3 Thẻ: - Khóa: Tên Giá trị: Tham chiếu: AWS::StackName - Khóa: Chủ sở hữu Giá trị: Tham chiếu: Chủ sở hữu DbInstance: Kiểu: AWS::RDS::DBInstance DeletionPolicy: Snapshot DependsOn: - DbSubnetGroup - RDSAccessSecurityGroup Thuộc tính: AllocatedStorage: Tham chiếu: AllocatedStorage AllowMajorVersionUpgrade: 'false' AutoMinorVersionUpgrade: Tham chiếu: AutoMinorVersionUpgrade BackupRetentionPeriod: Tham chiếu: BackupRetentionPeriod DBInstanceClass: Tham chiếu: InstanceType DBInstanceIdentifier: Tham chiếu: AWS::StackName DBSubnetGroupName: Tham chiếu: DbSubnetGroup Engine: Fn::FindInMap: - Cài đặt - MySQL - Engine EngineVersion: Fn::FindInMap: - Cài đặt - MySQL - Phiên bản MasterUsername: Tham chiếu: MasterUsername MasterUserPassword: Tham chiếu: 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: OwnerOutputs: Owner: Description: Team or Individual that Own 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. Giá trị: Tham chiếu: DbSubnetGroup RDSAccessSecurityGroup: Mô tả: Nhóm bảo mật RDS Access đã được tạo. Giá trị: Tham chiếu: RDSAccessSecurityGroup PrivateSubnet1: Mô tả: Triển khai Private Subnet 1 Giá trị: Tham chiếu: PrivateSubnet1 PrivateSubnet2: Mô tả: Triển khai Private Subnet 2 Giá trị: Tham chiếu: PrivateSubnet2 PrivateSubnet3: Mô tả: Triển khai Private Subnet 3 Giá trị: Tham chiếu: PrivateSubnet3 BackupRetentionPeriod: Mô tả: Thời gian lưu giữ bản sao lưu tính theo ngày Giá trị: Tham chiếu: BackupRetentionPeriod MultiAvailabilityZone: Mô tả: Bật nhiều vùng khả dụng? Giá trị: Tham chiếu: MultiAvailabilityZone SnapshotOnDelete: Mô tả: Tạo ảnh chụp nhanh khi xóa? Giá trị: Tham chiếu: SnapshotOnDelete PreferredBackupWindow: Mô tả: Cửa sổ sao lưu ưa thích Giá trị: Tham chiếu: PreferredBackupWindow PreferredMaintenanceWindow: Mô tả: Cửa sổ bảo trì ưa thích Giá trị: Tham chiếu: PreferredMaintenanceWindow AllocatedStorage: Mô tả: Lưu trữ được phân bổ theo GB Giá trị: Tham chiếu: AllocatedStorage
Sau khi bạn có mẫu trên máy cục bộ của mình, hãy vào bảng điều khiển AWS và nhấp vào "Dịch vụ" từ thanh menu trên cùng và tìm kiếm "Cloudformation".



Bạn sẽ thấy bảng điều khiển cloudformation chính như sau. Nhấp vào nút "Create Stack" để tạo một ngăn xếp để tạo RDS MySql Instance.



Nhấp vào nút tùy chọn "Tải tệp mẫu lên" và chọn mẫu mà bạn đã lưu từ máy cục bộ của mình và nhấp vào nút "Next".



Chỉ định tên bạn chọn cho ngăn xếp và điền thông tin chi tiết bắt buộc rồi nhấp vào "Next" để tiếp tục.





Bạn có thể cung cấp các thẻ cho Cloudformation Stack có thể được áp dụng cho RDS MySql Instance sẽ được ngăn xếp tạo ra. Nhấp vào "Tiếp theo" để tiếp tục.



Cuộn xuống và nhấp vào "Tạo ngăn xếp" để tạo ngăn xếp.



Việc tạo sẽ mất một khoảng thời gian. Bạn có thể thấy hành động đang được thực hiện trong các sự kiện.



Để xem trạng thái của phiên bản RDS MySql đang được tạo, hãy nhấp vào "Dịch vụ" và tìm kiếm "RDS".



Trên bảng điều khiển chính, hãy nhấp vào "Phiên bản DB".



Tại đây, bạn có thể thấy trạng thái của phiên bản là "Đang sửa đổi". Sẽ mất một thời gian để tạo và sẵn sàng sử dụng.



Trong các sự kiện Cloudformation Stack, bạn có thể thấy rằng sau một thời gian, khi RDS MySql Instance được tạo, trạng thái sẽ là "CREATE_COMPLETE"



Trong RDS Console, bây giờ bạn có thể thấy trạng thái là "Available".



Để xem thêm chi tiết về RDS MySql Instance, hãy nhấp vào RDS MySql Instance --> Kết nối & Bảo mật.

Để kết nối với RDS MySql Instance, bạn có thể sử dụng Endpoint do instance cung cấp.



Khi không cần instance nữa, hãy xóa Cloudformation Stack khỏi Cloudformation Main Dashboard để tiết kiệm chi phí.

Kết luận​

Trong bài viết này, chúng ta đã xem các bước để tạo một instance RDS MySql bằng Cloudformation Stack.
 
Back
Bên trên