Created
June 4, 2022 01:24
-
-
Save KMatt11/f35870bcca868b9f103fcc1bd05385c4 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Create 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 | |
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 | |
- 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 | |
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 | |
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 | |
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 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment