/RDS-Aurora-CloudFormation-Example.yaml
Forked from sjparkinson/RDS-Aurora-CloudFormation-Example.yaml
Created Aug 30, 2017
A basic CloudFormation template for an RDS Aurora cluster.
--- | |
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