-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathhbfl.resources.json
144 lines (134 loc) · 4.05 KB
/
hbfl.resources.json
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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
"Resources": {
"HamsterEC2Instance": {
"Type": "AWS::EC2::Instance",
"Properties": {
"InstanceType": { "Ref": "InstanceTypeParameter" },
"SecurityGroupIds": [ { "Ref": "HamsterSecurityGroup" } ],
"KeyName": { "Ref": "KeyNameParameter" },
"ImageId": { "Ref": "ImageIdParameter"},
"UserData": { "Fn::FindInMap": ["Static", "UserData", "Value"] }
}
},
"HamsterSecurityGroup": {
"Type": "AWS::EC2::SecurityGroup",
"Properties": {
"GroupDescription": "Enable SSH access via port 22",
"SecurityGroupIngress": [ {
"IpProtocol": "tcp",
"FromPort": "22",
"ToPort": "22",
"CidrIp": "0.0.0.0/0"
}, {
"IpProtocol": "tcp",
"FromPort": "3000",
"ToPort": "3000",
"CidrIp": "0.0.0.0/0"
} ],
"VpcId": { "Ref": "VPCIdParameter" }
}
},
"HamsterAutoScalingGroup": {
"Type": "AWS::AutoScaling::AutoScalingGroup",
"Properties": {
"AvailabilityZones": [
{ "Fn::Select": [ "0", { "Fn::GetAZs" : { "Ref" : "AWS::Region" } } ] },
{ "Fn::Select": [ "1", { "Fn::GetAZs" : { "Ref" : "AWS::Region" } } ] }
],
"LaunchConfigurationName": { "Ref": "HamsterLaunchConfiguration" },
"MaxSize": "2",
"MinSize": "1",
"TargetGroupARNs": [ { "Ref": "HamsterTargetGroup" } ]
}
},
"HamsterAutoScalingGroupPolicy": {
"Type": "AWS::AutoScaling::ScalingPolicy",
"Properties": {
"AdjustmentType": "ChangeInCapacity",
"AutoScalingGroupName": { "Ref": "HamsterAutoScalingGroup"},
"PolicyType": "TargetTrackingScaling",
"TargetTrackingConfiguration": {
"PredefinedMetricSpecification": {
"PredefinedMetricType": "ASGAverageCPUUtilization"
},
"TargetValue": 5
}
}
},
"HamsterLaunchConfiguration": {
"Type": "AWS::AutoScaling::LaunchConfiguration",
"Properties": {
"IamInstanceProfile": { "Ref": "HamsterIAMInstanceProfile"},
"ImageId": { "Ref": "ImageIdParameter"},
"InstanceType": { "Ref": "InstanceTypeParameter"},
"KeyName": { "Ref": "KeyNameParameter" },
"SecurityGroups": [ { "Ref": "HamsterSecurityGroup" } ],
"UserData": { "Fn::FindInMap": ["Static", "UserData", "Value"] }
}
},
"HamsterTargetGroup": {
"Type" : "AWS::ElasticLoadBalancingV2::TargetGroup",
"Properties" : {
"Port" : 3000,
"Protocol" : "HTTP",
"Targets": [{ "Id": { "Ref": "HamsterEC2Instance" } }],
"VpcId" : { "Ref": "VPCIdParameter" }
}
},
"HamsterEC2InstanceRole": {
"Type": "AWS::IAM::Role",
"Properties": {
"AssumeRolePolicyDocument": {
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "ec2.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
},
"ManagedPolicyArns": [ "arn:aws:iam::aws:policy/AdministratorAccess" ]
}
},
"HamsterIAMInstanceProfile": {
"Type": "AWS::IAM::InstanceProfile",
"Properties": {
"Roles": [ { "Ref": "HamsterEC2InstanceRole" } ]
}
},
"HamsterLoadBalancerSecurityGroup": {
"Type": "AWS::EC2::SecurityGroup",
"Properties": {
"GroupDescription": "Enable Load Balancer connections on port 80",
"SecurityGroupIngress": [ {
"IpProtocol": "tcp",
"FromPort": "80",
"ToPort": "80",
"CidrIp": "0.0.0.0/0"
} ]
}
},
"HamsterLoadBalancer": {
"Type" : "AWS::ElasticLoadBalancingV2::LoadBalancer",
"Properties" : {
"SecurityGroups" : [{ "Fn::GetAtt": ["HamsterLoadBalancerSecurityGroup", "GroupId"] }],
"Subnets" : { "Ref": "SubnetListParameter" }
}
},
"HamsterListener": {
"Type" : "AWS::ElasticLoadBalancingV2::Listener",
"Properties" : {
"DefaultActions" : [
{
"TargetGroupArn": { "Ref": "HamsterTargetGroup" },
"Type": "forward"
}
],
"LoadBalancerArn" : { "Ref": "HamsterLoadBalancer" },
"Port" : 80,
"Protocol" : "HTTP"
}
}
},