forked from talentedmrjones/cloudformation-deep-dive
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path06_rds-mappings.yml
60 lines (55 loc) · 2.02 KB
/
06_rds-mappings.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
---
AWSTemplateFormatVersion: "2010-09-09"
Description: "RDS instance for various environments"
Parameters:
Environment:
Type: String
AllowedValues:
- dev
- stage
- prod
# https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/conditions-section-structure.html
# https://github.com/awsdocs/aws-cloudformation-user-guide/issues/3
Conditions:
CreateProdResources: !Equals [ !Ref Environment, prod ] # yaml shorthand could be confusing (!=)
# !Equals
# Fn::Equals:
Mappings:
AttributesByEnvironment:
dev:
AllocatedStorage: 10
BackupRetentionPeriod: 5
DBInstanceClass: db.m4.large
Iops: 1000
MultiAZ: False
stage:
AllocatedStorage: 100
BackupRetentionPeriod: 5
DBInstanceClass: db.m4.2xlarge
Iops: 3000
MultiAZ: False
prod:
AllocatedStorage: 100
BackupRetentionPeriod: 35
DBInstanceClass: db.m4.2xlarge
Iops: 3000
MultiAZ: True
Resources:
RdsDbInstance:
Type: "AWS::RDS::DBInstance"
Properties:
AllocatedStorage: !FindInMap [AttributesByEnvironment, !Ref Environment, "AllocatedStorage"] # https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-conditions.html
AllowMajorVersionUpgrade: false
AutoMinorVersionUpgrade: true
BackupRetentionPeriod: !FindInMap [AttributesByEnvironment, !Ref Environment, "BackupRetentionPeriod"]
DBClusterIdentifier: myDBCluster # reminder: see update requires replacement
DBInstanceClass: !FindInMap [AttributesByEnvironment, !Ref Environment, "DBInstanceClass"]
Engine: postgres # https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBInstance.html
EngineVersion: 9.6.6
Iops: !FindInMap [AttributesByEnvironment, !Ref Environment, "Iops"]
MultiAZ: !FindInMap [AttributesByEnvironment, !Ref Environment, "MultiAZ"]
StorageEncrypted: !Condition CreateProdResources
StorageType: io1
Tags:
- Name: Environment
Value: !Ref Environment