Forked from sjparkinson/RDS-Aurora-CloudFormation-Example.yaml
Created
March 2, 2017 19:21
-
-
Save yyolk/42f63a42150f145c6668dbc37675dbfc to your computer and use it in GitHub Desktop.
A basic CloudFormation template for an RDS Aurora cluster.
This file contains 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
--- | |
AWSTemplateFormatVersion: 2010-09-09 | |
Description: A basic CloudFormation template for an RDS Aurora cluster. | |
Parameters: | |
DatabaseInstanceType: | |
Default: db.r3.large | |
AllowedValues: | |
- db.r3.large | |
- db.r3.xlarge | |
- db.r3.2xlarge | |
- db.r3.4xlarge | |
- db.r3.8xlarge | |
Description: The instance type to use for the database. | |
Type: String | |
DatabasePassword: | |
AllowedPattern: "[a-zA-Z0-9]+" | |
ConstraintDescription: must contain only alphanumeric characters. | |
Description: The database admin account password. | |
MaxLength: '41' | |
MinLength: '8' | |
NoEcho: 'true' | |
Type: String | |
DatabaseUsername: | |
AllowedPattern: "[a-zA-Z0-9]+" | |
ConstraintDescription: must contain only alphanumeric characters. | |
Description: The database admin account user name. | |
MaxLength: '16' | |
MinLength: '1' | |
Type: String | |
DatabaseBackupRetentionPeriod: | |
Type: String | |
Default: 7 | |
AllowedValues: | |
- 1 | |
- 7 | |
Description: The database backup retention period in days. | |
DatabaseSubnets: | |
Description: The subnets to place database instances in. | |
Type: List<AWS::EC2::Subnet::Id> | |
DatabaseSecurityGroups: | |
Type: List<AWS::EC2::SecurityGroup::Id> | |
Description: Security groups to apply to the RDS cluster. | |
Metadata: | |
AWS::CloudFormation::Interface: | |
ParameterGroups: | |
- Label: | |
default: Database Configuration | |
Parameters: | |
- DatabaseInstanceType | |
- DatabaseName | |
- DatabaseUsername | |
- DatabasePassword | |
- DatabaseSubnets | |
- DatabaseSecurityGroups | |
- DatabaseBackupRetentionPeriod | |
ParameterLabels: | |
DatabaseInstanceType: | |
default: Database Instance Type | |
DatabasePassword: | |
default: Database Password | |
DatabaseUsername: | |
default: Database Username | |
DatabaseBackupRetentionPeriod: | |
default: Database Backup Retention Period | |
DatabaseSubnets: | |
default: Database Subnets | |
DatabaseSecurityGroups: | |
default: Database Security Groups | |
Resources: | |
StackAlarmTopic: | |
Type: AWS::SNS::Topic | |
Properties: | |
DisplayName: Stack Alarm Topic | |
DatabaseSubnetGroup: | |
Type: AWS::RDS::DBSubnetGroup | |
Properties: | |
DBSubnetGroupDescription: CloudFormation managed DB subnet group. | |
SubnetIds: | |
Ref: DatabaseSubnets | |
DatabaseCluster: | |
Type: AWS::RDS::DBCluster | |
Properties: | |
Engine: aurora | |
MasterUsername: | |
Ref: DatabaseUsername | |
MasterUserPassword: | |
Ref: DatabasePassword | |
BackupRetentionPeriod: | |
Ref: DatabaseBackupRetentionPeriod | |
PreferredBackupWindow: 02:00-03:00 | |
PreferredMaintenanceWindow: mon:03:00-mon:04:00 | |
DBSubnetGroupName: | |
Ref: DatabaseSubnetGroup | |
VpcSecurityGroupIds: | |
Ref: DatabaseSecurityGroups | |
DatabasePrimaryInstance: | |
Type: AWS::RDS::DBInstance | |
Properties: | |
Engine: aurora | |
DBClusterIdentifier: | |
Ref: DatabaseCluster | |
DBInstanceClass: | |
Ref: DatabaseInstanceType | |
DBSubnetGroupName: | |
Ref: DatabaseSubnetGroup | |
DatabaseReplicaInstance: | |
Type: AWS::RDS::DBInstance | |
Properties: | |
Engine: aurora | |
DBClusterIdentifier: | |
Ref: DatabaseCluster | |
DBInstanceClass: | |
Ref: DatabaseInstanceType | |
DBSubnetGroupName: | |
Ref: DatabaseSubnetGroup | |
DatabasePrimaryCPUAlarm: | |
Type: AWS::CloudWatch::Alarm | |
Properties: | |
AlarmDescription: Primary database CPU utilization is over 80%. | |
Namespace: AWS/RDS | |
MetricName: CPUUtilization | |
Unit: Percent | |
Statistic: Average | |
Period: 300 | |
EvaluationPeriods: 2 | |
Threshold: 80 | |
ComparisonOperator: GreaterThanOrEqualToThreshold | |
Dimensions: | |
- Name: DBInstanceIdentifier | |
Value: | |
Ref: DatabasePrimaryInstance | |
AlarmActions: | |
- Ref: StackAlarmTopic | |
InsufficientDataActions: | |
- Ref: StackAlarmTopic | |
DatabaseReplicaCPUAlarm: | |
Type: AWS::CloudWatch::Alarm | |
Properties: | |
AlarmDescription: Replica database CPU utilization is over 80%. | |
Namespace: AWS/RDS | |
MetricName: CPUUtilization | |
Unit: Percent | |
Statistic: Average | |
Period: 300 | |
EvaluationPeriods: 2 | |
Threshold: 80 | |
ComparisonOperator: GreaterThanOrEqualToThreshold | |
Dimensions: | |
- Name: DBInstanceIdentifier | |
Value: | |
Ref: DatabaseReplicaInstance | |
AlarmActions: | |
- Ref: StackAlarmTopic | |
InsufficientDataActions: | |
- Ref: StackAlarmTopic | |
DatabasePrimaryMemoryAlarm: | |
Type: AWS::CloudWatch::Alarm | |
Properties: | |
AlarmDescription: Primary database freeable memory is under 700MB. | |
Namespace: AWS/RDS | |
MetricName: FreeableMemory | |
Unit: Bytes | |
Statistic: Average | |
Period: 300 | |
EvaluationPeriods: 2 | |
Threshold: 700000000 | |
ComparisonOperator: LessThanOrEqualToThreshold | |
Dimensions: | |
- Name: DBInstanceIdentifier | |
Value: | |
Ref: DatabasePrimaryInstance | |
AlarmActions: | |
- Ref: StackAlarmTopic | |
InsufficientDataActions: | |
- Ref: StackAlarmTopic | |
DatabasePrimaryMemoryAlarm: | |
Type: AWS::CloudWatch::Alarm | |
Properties: | |
AlarmDescription: Replica database freeable memory is under 700MB. | |
Namespace: AWS/RDS | |
MetricName: FreeableMemory | |
Unit: Bytes | |
Statistic: Average | |
Period: 300 | |
EvaluationPeriods: 2 | |
Threshold: 700000000 | |
ComparisonOperator: LessThanOrEqualToThreshold | |
Dimensions: | |
- Name: DBInstanceIdentifier | |
Value: | |
Ref: DatabaseReplicaInstance | |
AlarmActions: | |
- Ref: StackAlarmTopic | |
InsufficientDataActions: | |
- Ref: StackAlarmTopic | |
DatabasePrimaryReplicationAlarm: | |
Type: AWS::CloudWatch::Alarm | |
Properties: | |
AlarmDescription: Database replication latency is over 200ms. | |
Namespace: AWS/RDS | |
MetricName: AuroraReplicaLag | |
Unit: Milliseconds | |
Statistic: Average | |
Period: 300 | |
EvaluationPeriods: 2 | |
Threshold: 200 | |
ComparisonOperator: GreaterThanOrEqualToThreshold | |
Dimensions: | |
- Name: DBInstanceIdentifier | |
Value: | |
Ref: DatabaseReplicaInstance | |
AlarmActions: | |
- Ref: StackAlarmTopic | |
DatabaseReplicaReplicationAlarm: | |
Type: AWS::CloudWatch::Alarm | |
Properties: | |
AlarmDescription: Database replication latency is over 200ms. | |
Namespace: AWS/RDS | |
MetricName: AuroraReplicaLag | |
Unit: Milliseconds | |
Statistic: Average | |
Period: 300 | |
EvaluationPeriods: 2 | |
Threshold: 200 | |
ComparisonOperator: GreaterThanOrEqualToThreshold | |
Dimensions: | |
- Name: DBInstanceIdentifier | |
Value: | |
Ref: DatabaseReplicaInstance | |
AlarmActions: | |
- Ref: StackAlarmTopic |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment