etude_for_aws 0.7.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (124) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +103 -0
  3. data/.rspec +2 -0
  4. data/.ruby-version +1 -0
  5. data/.yardopts +10 -0
  6. data/Dockerfile +17 -0
  7. data/Dockerfile-dev +20 -0
  8. data/Gemfile +6 -0
  9. data/Gemfile.lock +89 -0
  10. data/Guardfile +22 -0
  11. data/Jenkinsfile +11 -0
  12. data/README.md +26 -0
  13. data/Rakefile +12 -0
  14. data/Vagrantfile +15 -0
  15. data/bin/aws_console.rb +10 -0
  16. data/bin/console +14 -0
  17. data/bin/setup +8 -0
  18. data/circle.yml +22 -0
  19. data/config.yml +124 -0
  20. data/docker-compose.yml +9 -0
  21. data/docs/README.md +54 -0
  22. data/docs/_config.yml +6 -0
  23. data/docs/dev/cfm/cfm.md +9 -0
  24. data/docs/dev/cfm/images/vpc_core_model.png +0 -0
  25. data/docs/dev/cfm/images/vpc_type1.png +0 -0
  26. data/docs/dev/cfm/images/vpc_type2.png +0 -0
  27. data/docs/dev/cfm/images/vpc_type3.png +0 -0
  28. data/docs/dev/cfm/images/vpc_type4.png +0 -0
  29. data/docs/dev/cfm/images/vpc_type5.png +0 -0
  30. data/docs/dev/cfm/images/vpc_type6.png +0 -0
  31. data/docs/dev/cfm/images/vpc_type7.png +0 -0
  32. data/docs/dev/cfm/vpc/core_model.puml +35 -0
  33. data/docs/dev/cfm/vpc/vpc.md +39 -0
  34. data/docs/dev/cfm/vpc/vpc_type1.puml +17 -0
  35. data/docs/dev/cfm/vpc/vpc_type2.puml +23 -0
  36. data/docs/dev/cfm/vpc/vpc_type3.puml +24 -0
  37. data/docs/dev/cfm/vpc/vpc_type4.puml +23 -0
  38. data/docs/dev/cfm/vpc/vpc_type5.puml +25 -0
  39. data/docs/dev/cfm/vpc/vpc_type6.puml +26 -0
  40. data/docs/dev/cfm/vpc/vpc_type7.puml +39 -0
  41. data/docs/dev/ec2/core_model.puml +43 -0
  42. data/docs/dev/ec2/ec2.md +36 -0
  43. data/docs/dev/ec2/ec2_type1.puml +27 -0
  44. data/docs/dev/ec2/ec2_type2.puml +43 -0
  45. data/docs/dev/ec2/ec2_type3.puml +44 -0
  46. data/docs/dev/ec2/ec2_type4.puml +43 -0
  47. data/docs/dev/ec2/ec2_type5.puml +45 -0
  48. data/docs/dev/ec2/ec2_type6.puml +46 -0
  49. data/docs/dev/ec2/ec2_type7.puml +79 -0
  50. data/docs/dev/ec2/images/.keep +0 -0
  51. data/docs/dev/ec2/images/ec2_core_model.png +0 -0
  52. data/docs/dev/ec2/images/ec2_type1.png +0 -0
  53. data/docs/dev/ec2/images/ec2_type2.png +0 -0
  54. data/docs/dev/ec2/images/ec2_type3.png +0 -0
  55. data/docs/dev/ec2/images/ec2_type4.png +0 -0
  56. data/docs/dev/ec2/images/ec2_type5.png +0 -0
  57. data/docs/dev/ec2/images/ec2_type6.png +0 -0
  58. data/docs/dev/ec2/images/ec2_type7.png +0 -0
  59. data/docs/dev/vpc/core_model.puml +49 -0
  60. data/docs/dev/vpc/images/core_model.png +0 -0
  61. data/docs/dev/vpc/images/simple.png +0 -0
  62. data/docs/dev/vpc/images/standard.png +0 -0
  63. data/docs/dev/vpc/simple.puml +17 -0
  64. data/docs/dev/vpc/standard.puml +24 -0
  65. data/docs/dev/vpc/vpc.md +19 -0
  66. data/docs/ops/build_aws_sdk_repl.md +19 -0
  67. data/docs/ops/images/.keep +0 -0
  68. data/docs/ops/run_rake_task.md +89 -0
  69. data/docs/ops/ship_circleci.md +9 -0
  70. data/docs/ops/ship_jenkins.md +20 -0
  71. data/docs/ops/ship_ruby_gem.md +26 -0
  72. data/docs/template_catalog.md +6 -0
  73. data/docs/template_pattern.md +13 -0
  74. data/docs/template_recipe.md +6 -0
  75. data/docs/template_spec.md +8 -0
  76. data/etude_for_aws.gemspec +41 -0
  77. data/etude_for_aws.iml +42 -0
  78. data/exe/etude_for_aws +3 -0
  79. data/lib/etude_for_aws.rb +38 -0
  80. data/lib/etude_for_aws/cfm/configuration.rb +39 -0
  81. data/lib/etude_for_aws/cfm/vpc/cfm_templates/vpc-1az-1subnet-pub.template +529 -0
  82. data/lib/etude_for_aws/cfm/vpc/cfm_templates/vpc-1az-2subnet-pub-pri.template +790 -0
  83. data/lib/etude_for_aws/cfm/vpc/cfm_templates/vpc-1az-2subnet-pub.template +634 -0
  84. data/lib/etude_for_aws/cfm/vpc/cfm_templates/vpc-2az-2subnet-pri.template +645 -0
  85. data/lib/etude_for_aws/cfm/vpc/cfm_templates/vpc-2az-2subnet-pub-pri.template +611 -0
  86. data/lib/etude_for_aws/cfm/vpc/cfm_templates/vpc-2az-2subnet-pub.template +646 -0
  87. data/lib/etude_for_aws/cfm/vpc/cfm_templates/vpc-2az-4subnet-pub-pri.template +1010 -0
  88. data/lib/etude_for_aws/cfm/vpc/null_vpc.rb +13 -0
  89. data/lib/etude_for_aws/cfm/vpc/one_az_one_public_subnet_vpc.rb +45 -0
  90. data/lib/etude_for_aws/cfm/vpc/one_az_two_public_and_private_subnet_vpc.rb +47 -0
  91. data/lib/etude_for_aws/cfm/vpc/one_az_two_public_subnet_vpc.rb +47 -0
  92. data/lib/etude_for_aws/cfm/vpc/two_az_one_public_subnet_and_private_subnet_vpc.rb +52 -0
  93. data/lib/etude_for_aws/cfm/vpc/two_az_two_private_subnet_vpc.rb +38 -0
  94. data/lib/etude_for_aws/cfm/vpc/two_az_two_public_subnet_and_private_subnet_vpc.rb +38 -0
  95. data/lib/etude_for_aws/cfm/vpc/two_az_two_public_subnet_vpc.rb +38 -0
  96. data/lib/etude_for_aws/cfm/vpc/vpc.rb +104 -0
  97. data/lib/etude_for_aws/ec2/configuration.rb +66 -0
  98. data/lib/etude_for_aws/ec2/ec2.rb +218 -0
  99. data/lib/etude_for_aws/ec2/ec2_api_gateway.rb +127 -0
  100. data/lib/etude_for_aws/ec2/ec2_instance.rb +107 -0
  101. data/lib/etude_for_aws/ec2/key_pair.rb +46 -0
  102. data/lib/etude_for_aws/ec2/security_group.rb +75 -0
  103. data/lib/etude_for_aws/ec2/vpc_interface.rb +11 -0
  104. data/lib/etude_for_aws/helpers/certification_helper.rb +16 -0
  105. data/lib/etude_for_aws/helpers/configuration_helper.rb +103 -0
  106. data/lib/etude_for_aws/tasks/cfm.rake +73 -0
  107. data/lib/etude_for_aws/tasks/ec2.rake +210 -0
  108. data/lib/etude_for_aws/tasks/vpc.rake +47 -0
  109. data/lib/etude_for_aws/version.rb +3 -0
  110. data/lib/etude_for_aws/vpc/configuration.rb +77 -0
  111. data/lib/etude_for_aws/vpc/customer_gateway.rb +28 -0
  112. data/lib/etude_for_aws/vpc/internet_gateway.rb +15 -0
  113. data/lib/etude_for_aws/vpc/route_table.rb +42 -0
  114. data/lib/etude_for_aws/vpc/simple_vpc.rb +57 -0
  115. data/lib/etude_for_aws/vpc/standard_vpc.rb +94 -0
  116. data/lib/etude_for_aws/vpc/subnet.rb +22 -0
  117. data/lib/etude_for_aws/vpc/vpc.rb +147 -0
  118. data/lib/etude_for_aws/vpc/vpc_api_gateway.rb +277 -0
  119. data/lib/etude_for_aws/vpc/vpc_director.rb +43 -0
  120. data/lib/etude_for_aws/vpc/vpn.rb +244 -0
  121. data/lib/etude_for_aws/vpc/vpn_connection.rb +28 -0
  122. data/lib/etude_for_aws/vpc/vpn_director.rb +47 -0
  123. data/lib/etude_for_aws/vpc/vpn_gateway.rb +36 -0
  124. metadata +280 -0
@@ -0,0 +1,1010 @@
1
+ {
2
+ "AWSTemplateFormatVersion": "2010-09-09",
3
+ "Description": "AWS CloudFormation Sample Template.",
4
+ "Parameters" : {
5
+ "AZ1" : {
6
+ "Default" : "ap-northeast-1a",
7
+ "Description" : "AZ",
8
+ "Type" : "String",
9
+ "AllowedValues" : [ "ap-northeast-1a","ap-northeast-1c","us-west-2a","us-west-2b","us-west-2c" ],
10
+ "ConstraintDescription" : "must select a valid availability zone."
11
+ },
12
+ "AZ2" : {
13
+ "Default" : "ap-northeast-1c",
14
+ "Description" : "AZ",
15
+ "Type" : "String",
16
+ "AllowedValues" : [ "ap-northeast-1a","ap-northeast-1c","us-west-2a","us-west-2b","us-west-2c" ],
17
+ "ConstraintDescription" : "must select a valid availability zone."
18
+ }
19
+ },
20
+ "Mappings": {
21
+ "SubnetConfig": {
22
+ "VPC": {
23
+ "CIDR": "172.16.0.0/16"
24
+ },
25
+ "Public-1a": {
26
+ "CIDR": "172.16.1.0/24"
27
+ },
28
+ "Public-1c": {
29
+ "CIDR": "172.16.2.0/24"
30
+ },
31
+ "Private-1a": {
32
+ "CIDR": "172.16.3.0/24"
33
+ },
34
+ "Private-1c": {
35
+ "CIDR": "172.16.4.0/24"
36
+ }
37
+ }
38
+ },
39
+ "Resources": {
40
+ "VPC": {
41
+ "Type": "AWS::EC2::VPC",
42
+ "Properties": {
43
+ "CidrBlock": {
44
+ "Fn::FindInMap": [
45
+ "SubnetConfig",
46
+ "VPC",
47
+ "CIDR"
48
+ ]
49
+ },
50
+ "EnableDnsSupport" : "true",
51
+ "EnableDnsHostnames" : "true",
52
+ "InstanceTenancy" : "default",
53
+ "Tags": [
54
+ {
55
+ "Key": "Application",
56
+ "Value": {
57
+ "Ref": "AWS::StackId"
58
+ }
59
+ },
60
+ {
61
+ "Key": "Network",
62
+ "Value": "Public"
63
+ }
64
+ ]
65
+ },
66
+ "Metadata": {
67
+ "AWS::CloudFormation::Designer": {
68
+ "id": "36f558fe-7a2b-4a24-9edb-3b9a10d33217"
69
+ }
70
+ }
71
+ },
72
+ "PublicSubnet1a": {
73
+ "Type": "AWS::EC2::Subnet",
74
+ "Properties": {
75
+ "VpcId": {
76
+ "Ref": "VPC"
77
+ },
78
+ "CidrBlock": {
79
+ "Fn::FindInMap": [
80
+ "SubnetConfig",
81
+ "Public-1a",
82
+ "CIDR"
83
+ ]
84
+ },
85
+ "MapPublicIpOnLaunch" : true,
86
+ "AvailabilityZone": {"Ref": "AZ1"},
87
+ "Tags": [
88
+ {
89
+ "Key": "Application",
90
+ "Value": {
91
+ "Ref": "AWS::StackId"
92
+ }
93
+ },
94
+ {
95
+ "Key": "Network",
96
+ "Value": "Public"
97
+ }
98
+ ]
99
+ },
100
+ "Metadata": {
101
+ "AWS::CloudFormation::Designer": {
102
+ "id": "d17f3169-9687-4907-ac33-04ce215fded7"
103
+ }
104
+ }
105
+ },
106
+ "PublicSubnet1c": {
107
+ "Type": "AWS::EC2::Subnet",
108
+ "Properties": {
109
+ "VpcId": {
110
+ "Ref": "VPC"
111
+ },
112
+ "CidrBlock": {
113
+ "Fn::FindInMap": [
114
+ "SubnetConfig",
115
+ "Public-1c",
116
+ "CIDR"
117
+ ]
118
+ },
119
+ "MapPublicIpOnLaunch" : true,
120
+ "AvailabilityZone": {"Ref": "AZ2"},
121
+ "Tags": [
122
+ {
123
+ "Key": "Application",
124
+ "Value": {
125
+ "Ref": "AWS::StackId"
126
+ }
127
+ },
128
+ {
129
+ "Key": "Network",
130
+ "Value": "Public"
131
+ }
132
+ ]
133
+ },
134
+ "Metadata": {
135
+ "AWS::CloudFormation::Designer": {
136
+ "id": "21cff9ba-e2c6-4d76-80d2-7f10d6b618b0"
137
+ }
138
+ }
139
+ },
140
+ "InternetGateway": {
141
+ "Type": "AWS::EC2::InternetGateway",
142
+ "Properties": {
143
+ "Tags": [
144
+ {
145
+ "Key": "Application",
146
+ "Value": {
147
+ "Ref": "AWS::StackId"
148
+ }
149
+ },
150
+ {
151
+ "Key": "Network",
152
+ "Value": "Public"
153
+ }
154
+ ]
155
+ },
156
+ "Metadata": {
157
+ "AWS::CloudFormation::Designer": {
158
+ "id": "7354dd3a-e180-418e-8cd2-a9b2ad2a4666"
159
+ }
160
+ }
161
+ },
162
+ "GatewayToInternet": {
163
+ "Type": "AWS::EC2::VPCGatewayAttachment",
164
+ "Properties": {
165
+ "VpcId": {
166
+ "Ref": "VPC"
167
+ },
168
+ "InternetGatewayId": {
169
+ "Ref": "InternetGateway"
170
+ }
171
+ },
172
+ "Metadata": {
173
+ "AWS::CloudFormation::Designer": {
174
+ "id": "92a83719-48bf-4e04-a3cd-0f8b99305053"
175
+ }
176
+ }
177
+ },
178
+ "PublicRouteTable": {
179
+ "Type": "AWS::EC2::RouteTable",
180
+ "Properties": {
181
+ "VpcId": {
182
+ "Ref": "VPC"
183
+ },
184
+ "Tags": [
185
+ {
186
+ "Key": "Application",
187
+ "Value": {
188
+ "Ref": "AWS::StackId"
189
+ }
190
+ },
191
+ {
192
+ "Key": "Network",
193
+ "Value": "Public"
194
+ }
195
+ ]
196
+ },
197
+ "Metadata": {
198
+ "AWS::CloudFormation::Designer": {
199
+ "id": "35457506-b697-467e-925b-61a48305e0da"
200
+ }
201
+ }
202
+ },
203
+ "PublicRoute": {
204
+ "Type": "AWS::EC2::Route",
205
+ "DependsOn": "GatewayToInternet",
206
+ "Properties": {
207
+ "RouteTableId": {
208
+ "Ref": "PublicRouteTable"
209
+ },
210
+ "DestinationCidrBlock": "0.0.0.0/0",
211
+ "GatewayId": {
212
+ "Ref": "InternetGateway"
213
+ }
214
+ },
215
+ "Metadata": {
216
+ "AWS::CloudFormation::Designer": {
217
+ "id": "3b3697f1-2874-4073-847a-c2814e9c4336"
218
+ }
219
+ }
220
+ },
221
+ "PublicSubnetRouteTableAssociation1a": {
222
+ "Type": "AWS::EC2::SubnetRouteTableAssociation",
223
+ "Properties": {
224
+ "SubnetId": {
225
+ "Ref": "PublicSubnet1a"
226
+ },
227
+ "RouteTableId": {
228
+ "Ref": "PublicRouteTable"
229
+ }
230
+ },
231
+ "Metadata": {
232
+ "AWS::CloudFormation::Designer": {
233
+ "id": "6033dd6a-6b5b-4b0a-9e41-a59a779c5a61"
234
+ }
235
+ }
236
+ },
237
+ "PublicSubnetRouteTableAssociation1c": {
238
+ "Type": "AWS::EC2::SubnetRouteTableAssociation",
239
+ "Properties": {
240
+ "SubnetId": {
241
+ "Ref": "PublicSubnet1c"
242
+ },
243
+ "RouteTableId": {
244
+ "Ref": "PublicRouteTable"
245
+ }
246
+ },
247
+ "Metadata": {
248
+ "AWS::CloudFormation::Designer": {
249
+ "id": "ff1a00b2-0c71-4500-a421-08255279d2f0"
250
+ }
251
+ }
252
+ },
253
+ "PublicNetworkAcl": {
254
+ "Type": "AWS::EC2::NetworkAcl",
255
+ "Properties": {
256
+ "VpcId": {
257
+ "Ref": "VPC"
258
+ },
259
+ "Tags": [
260
+ {
261
+ "Key": "Application",
262
+ "Value": {
263
+ "Ref": "AWS::StackId"
264
+ }
265
+ },
266
+ {
267
+ "Key": "Network",
268
+ "Value": "Public"
269
+ }
270
+ ]
271
+ },
272
+ "Metadata": {
273
+ "AWS::CloudFormation::Designer": {
274
+ "id": "9d9f7c73-1580-4f8e-8463-6e27fb43e766"
275
+ }
276
+ }
277
+ },
278
+ "InboundHTTPPublicNetworkAclEntry": {
279
+ "Type": "AWS::EC2::NetworkAclEntry",
280
+ "Properties": {
281
+ "NetworkAclId": {
282
+ "Ref": "PublicNetworkAcl"
283
+ },
284
+ "RuleNumber": "100",
285
+ "Protocol": "6",
286
+ "RuleAction": "allow",
287
+ "Egress": "false",
288
+ "CidrBlock": "0.0.0.0/0",
289
+ "PortRange": {
290
+ "From": "80",
291
+ "To": "80"
292
+ }
293
+ },
294
+ "Metadata": {
295
+ "AWS::CloudFormation::Designer": {
296
+ "id": "fc400079-4e29-449d-9261-802c07e90664"
297
+ }
298
+ }
299
+ },
300
+ "InboundHTTPSPublicNetworkAclEntry": {
301
+ "Type": "AWS::EC2::NetworkAclEntry",
302
+ "Properties": {
303
+ "NetworkAclId": {
304
+ "Ref": "PublicNetworkAcl"
305
+ },
306
+ "RuleNumber": "101",
307
+ "Protocol": "6",
308
+ "RuleAction": "allow",
309
+ "Egress": "false",
310
+ "CidrBlock": "0.0.0.0/0",
311
+ "PortRange": {
312
+ "From": "443",
313
+ "To": "443"
314
+ }
315
+ },
316
+ "Metadata": {
317
+ "AWS::CloudFormation::Designer": {
318
+ "id": "8b8f955d-4b13-43ad-bd92-88a983aba05e"
319
+ }
320
+ }
321
+ },
322
+ "InboundSSHPublicNetworkAclEntry": {
323
+ "Type": "AWS::EC2::NetworkAclEntry",
324
+ "Properties": {
325
+ "NetworkAclId": {
326
+ "Ref": "PublicNetworkAcl"
327
+ },
328
+ "RuleNumber": "102",
329
+ "Protocol": "6",
330
+ "RuleAction": "allow",
331
+ "Egress": "false",
332
+ "CidrBlock": "0.0.0.0/0",
333
+ "PortRange": {
334
+ "From": "22",
335
+ "To": "22"
336
+ }
337
+ },
338
+ "Metadata": {
339
+ "AWS::CloudFormation::Designer": {
340
+ "id": "c8ec5a7a-62cb-4406-9f2d-0b5a564fd966"
341
+ }
342
+ }
343
+ },
344
+ "InboundEphemeralPublicNetworkAclEntry": {
345
+ "Type": "AWS::EC2::NetworkAclEntry",
346
+ "Properties": {
347
+ "NetworkAclId": {
348
+ "Ref": "PublicNetworkAcl"
349
+ },
350
+ "RuleNumber": "103",
351
+ "Protocol": "6",
352
+ "RuleAction": "allow",
353
+ "Egress": "false",
354
+ "CidrBlock": "0.0.0.0/0",
355
+ "PortRange": {
356
+ "From": "1024",
357
+ "To": "65535"
358
+ }
359
+ },
360
+ "Metadata": {
361
+ "AWS::CloudFormation::Designer": {
362
+ "id": "f22aa599-4f7e-4715-a098-41e10c081523"
363
+ }
364
+ }
365
+ },
366
+ "OutboundPublicNetworkAclEntry": {
367
+ "Type": "AWS::EC2::NetworkAclEntry",
368
+ "Properties": {
369
+ "NetworkAclId": {
370
+ "Ref": "PublicNetworkAcl"
371
+ },
372
+ "RuleNumber": "100",
373
+ "Protocol": "6",
374
+ "RuleAction": "allow",
375
+ "Egress": "true",
376
+ "CidrBlock": "0.0.0.0/0",
377
+ "PortRange": {
378
+ "From": "0",
379
+ "To": "65535"
380
+ }
381
+ },
382
+ "Metadata": {
383
+ "AWS::CloudFormation::Designer": {
384
+ "id": "6a00b44b-c40f-4464-aad5-1d54e3772398"
385
+ }
386
+ }
387
+ },
388
+ "PublicSubnetNetworkAclAssociation1a": {
389
+ "Type": "AWS::EC2::SubnetNetworkAclAssociation",
390
+ "Properties": {
391
+ "SubnetId": {
392
+ "Ref": "PublicSubnet1a"
393
+ },
394
+ "NetworkAclId": {
395
+ "Ref": "PublicNetworkAcl"
396
+ }
397
+ },
398
+ "Metadata": {
399
+ "AWS::CloudFormation::Designer": {
400
+ "id": "de86ddc8-8415-41a5-a905-b1bda5ba3fed"
401
+ }
402
+ }
403
+ },
404
+ "PublicSubnetNetworkAclAssociation1c": {
405
+ "Type": "AWS::EC2::SubnetNetworkAclAssociation",
406
+ "Properties": {
407
+ "SubnetId": {
408
+ "Ref": "PublicSubnet1c"
409
+ },
410
+ "NetworkAclId": {
411
+ "Ref": "PublicNetworkAcl"
412
+ }
413
+ },
414
+ "Metadata": {
415
+ "AWS::CloudFormation::Designer": {
416
+ "id": "353e5d2f-7968-4636-a916-b4d1305ad23f"
417
+ }
418
+ }
419
+ },
420
+ "PrivateSubnet1a": {
421
+ "Type": "AWS::EC2::Subnet",
422
+ "Properties": {
423
+ "VpcId": {
424
+ "Ref": "VPC"
425
+ },
426
+ "CidrBlock": {
427
+ "Fn::FindInMap": [
428
+ "SubnetConfig",
429
+ "Private-1a",
430
+ "CIDR"
431
+ ]
432
+ },
433
+ "AvailabilityZone": {"Ref": "AZ1"},
434
+ "Tags": [
435
+ {
436
+ "Key": "Application",
437
+ "Value": {
438
+ "Ref": "AWS::StackId"
439
+ }
440
+ },
441
+ {
442
+ "Key": "Network",
443
+ "Value": "Private"
444
+ }
445
+ ]
446
+ },
447
+ "Metadata": {
448
+ "AWS::CloudFormation::Designer": {
449
+ "id": "c88e3060-c887-4c7a-8b25-74dba8c01b1f"
450
+ }
451
+ }
452
+ },
453
+ "PrivateSubnet1c": {
454
+ "Type": "AWS::EC2::Subnet",
455
+ "Properties": {
456
+ "VpcId": {
457
+ "Ref": "VPC"
458
+ },
459
+ "CidrBlock": {
460
+ "Fn::FindInMap": [
461
+ "SubnetConfig",
462
+ "Private-1c",
463
+ "CIDR"
464
+ ]
465
+ },
466
+ "AvailabilityZone": {"Ref": "AZ2"},
467
+ "Tags": [
468
+ {
469
+ "Key": "Application",
470
+ "Value": {
471
+ "Ref": "AWS::StackId"
472
+ }
473
+ },
474
+ {
475
+ "Key": "Network",
476
+ "Value": "Private"
477
+ }
478
+ ]
479
+ },
480
+ "Metadata": {
481
+ "AWS::CloudFormation::Designer": {
482
+ "id": "f950a56e-a1ed-4e65-97df-1b8869da8b59"
483
+ }
484
+ }
485
+ },
486
+ "PrivateRouteTable": {
487
+ "Type": "AWS::EC2::RouteTable",
488
+ "Properties": {
489
+ "VpcId": {
490
+ "Ref": "VPC"
491
+ },
492
+ "Tags": [
493
+ {
494
+ "Key": "Application",
495
+ "Value": {
496
+ "Ref": "AWS::StackId"
497
+ }
498
+ },
499
+ {
500
+ "Key": "Network",
501
+ "Value": "Private"
502
+ }
503
+ ]
504
+ },
505
+ "Metadata": {
506
+ "AWS::CloudFormation::Designer": {
507
+ "id": "e13eddcb-d508-41ed-86ba-52721609f64d"
508
+ }
509
+ }
510
+ },
511
+ "PrivateSubnetRouteTableAssociation1a": {
512
+ "Type": "AWS::EC2::SubnetRouteTableAssociation",
513
+ "Properties": {
514
+ "SubnetId": {
515
+ "Ref": "PrivateSubnet1a"
516
+ },
517
+ "RouteTableId": {
518
+ "Ref": "PrivateRouteTable"
519
+ }
520
+ },
521
+ "Metadata": {
522
+ "AWS::CloudFormation::Designer": {
523
+ "id": "6459bdbb-c25c-4bd7-9ea6-e78fc7da90d0"
524
+ }
525
+ }
526
+ },
527
+ "PrivateSubnetRouteTableAssociation1c": {
528
+ "Type": "AWS::EC2::SubnetRouteTableAssociation",
529
+ "Properties": {
530
+ "SubnetId": {
531
+ "Ref": "PrivateSubnet1c"
532
+ },
533
+ "RouteTableId": {
534
+ "Ref": "PrivateRouteTable"
535
+ }
536
+ },
537
+ "Metadata": {
538
+ "AWS::CloudFormation::Designer": {
539
+ "id": "6237f72f-664d-4c7d-bbb9-52980fb4f620"
540
+ }
541
+ }
542
+ },
543
+ "PrivateNetworkAcl": {
544
+ "Type": "AWS::EC2::NetworkAcl",
545
+ "Properties": {
546
+ "VpcId": {
547
+ "Ref": "VPC"
548
+ },
549
+ "Tags": [
550
+ {
551
+ "Key": "Application",
552
+ "Value": {
553
+ "Ref": "AWS::StackId"
554
+ }
555
+ },
556
+ {
557
+ "Key": "Network",
558
+ "Value": "Private"
559
+ }
560
+ ]
561
+ },
562
+ "Metadata": {
563
+ "AWS::CloudFormation::Designer": {
564
+ "id": "5f563655-d27c-492d-9458-8b36dd950a7e"
565
+ }
566
+ }
567
+ },
568
+ "InboundPrivateNetworkAclEntry": {
569
+ "Type": "AWS::EC2::NetworkAclEntry",
570
+ "Properties": {
571
+ "NetworkAclId": {
572
+ "Ref": "PrivateNetworkAcl"
573
+ },
574
+ "RuleNumber": "100",
575
+ "Protocol": "6",
576
+ "RuleAction": "allow",
577
+ "Egress": "false",
578
+ "CidrBlock": "0.0.0.0/0",
579
+ "PortRange": {
580
+ "From": "0",
581
+ "To": "65535"
582
+ }
583
+ },
584
+ "Metadata": {
585
+ "AWS::CloudFormation::Designer": {
586
+ "id": "81a03e88-a76c-4335-be92-01c433e692cf"
587
+ }
588
+ }
589
+ },
590
+ "OutBoundPrivateNetworkAclEntry": {
591
+ "Type": "AWS::EC2::NetworkAclEntry",
592
+ "Properties": {
593
+ "NetworkAclId": {
594
+ "Ref": "PrivateNetworkAcl"
595
+ },
596
+ "RuleNumber": "100",
597
+ "Protocol": "6",
598
+ "RuleAction": "allow",
599
+ "Egress": "true",
600
+ "CidrBlock": "0.0.0.0/0",
601
+ "PortRange": {
602
+ "From": "0",
603
+ "To": "65535"
604
+ }
605
+ },
606
+ "Metadata": {
607
+ "AWS::CloudFormation::Designer": {
608
+ "id": "0d4bfe6f-ab3b-434a-bb71-6b0d7a74c1c8"
609
+ }
610
+ }
611
+ },
612
+ "PrivateSubnetNetworkAclAssociation1a": {
613
+ "Type": "AWS::EC2::SubnetNetworkAclAssociation",
614
+ "Properties": {
615
+ "SubnetId": {
616
+ "Ref": "PrivateSubnet1a"
617
+ },
618
+ "NetworkAclId": {
619
+ "Ref": "PrivateNetworkAcl"
620
+ }
621
+ },
622
+ "Metadata": {
623
+ "AWS::CloudFormation::Designer": {
624
+ "id": "c1a742ea-be11-4f90-9edb-00340f314443"
625
+ }
626
+ }
627
+ },
628
+ "PrivateSubnetNetworkAclAssociation1c": {
629
+ "Type": "AWS::EC2::SubnetNetworkAclAssociation",
630
+ "Properties": {
631
+ "SubnetId": {
632
+ "Ref": "PrivateSubnet1c"
633
+ },
634
+ "NetworkAclId": {
635
+ "Ref": "PrivateNetworkAcl"
636
+ }
637
+ },
638
+ "Metadata": {
639
+ "AWS::CloudFormation::Designer": {
640
+ "id": "84446bb6-0790-4a7b-868e-776127af1b1a"
641
+ }
642
+ }
643
+ }
644
+ },
645
+ "Outputs": {
646
+ "VPCID" : {
647
+ "Value" : { "Ref" : "VPC" },
648
+ "Description" : "VPC ID"
649
+ },
650
+ "SUBNETPUB1" : {
651
+ "Value" : { "Ref" : "PublicSubnet1a" },
652
+ "Description" : "PublicSubnet1"
653
+ },
654
+ "SUBNETPUB2" : {
655
+ "Value" : { "Ref" : "PublicSubnet1c" },
656
+ "Description" : "PublicSubnet2 "
657
+ },
658
+ "SUBNETPRI1" : {
659
+ "Value" : { "Ref" : "PrivateSubnet1a" },
660
+ "Description" : "PrivateSubnet1"
661
+ },
662
+ "SUBNETPRI2" : {
663
+ "Value" : { "Ref" : "PrivateSubnet1c" },
664
+ "Description" : "PrivateSubnet2"
665
+ }
666
+ },
667
+ "Metadata": {
668
+ "AWS::CloudFormation::Designer": {
669
+ "7354dd3a-e180-418e-8cd2-a9b2ad2a4666": {
670
+ "size": {
671
+ "width": 60,
672
+ "height": 60
673
+ },
674
+ "position": {
675
+ "x": 900,
676
+ "y": 650
677
+ },
678
+ "z": 1,
679
+ "embeds": []
680
+ },
681
+ "36f558fe-7a2b-4a24-9edb-3b9a10d33217": {
682
+ "size": {
683
+ "width": 1120,
684
+ "height": 860
685
+ },
686
+ "position": {
687
+ "x": -350,
688
+ "y": 530
689
+ },
690
+ "z": 1,
691
+ "embeds": [
692
+ "5f563655-d27c-492d-9458-8b36dd950a7e",
693
+ "e13eddcb-d508-41ed-86ba-52721609f64d",
694
+ "f950a56e-a1ed-4e65-97df-1b8869da8b59",
695
+ "c88e3060-c887-4c7a-8b25-74dba8c01b1f",
696
+ "9d9f7c73-1580-4f8e-8463-6e27fb43e766",
697
+ "35457506-b697-467e-925b-61a48305e0da",
698
+ "21cff9ba-e2c6-4d76-80d2-7f10d6b618b0",
699
+ "d17f3169-9687-4907-ac33-04ce215fded7"
700
+ ]
701
+ },
702
+ "5f563655-d27c-492d-9458-8b36dd950a7e": {
703
+ "size": {
704
+ "width": 190,
705
+ "height": 310
706
+ },
707
+ "position": {
708
+ "x": -260,
709
+ "y": 1010
710
+ },
711
+ "z": 2,
712
+ "parent": "36f558fe-7a2b-4a24-9edb-3b9a10d33217",
713
+ "embeds": [
714
+ "0d4bfe6f-ab3b-434a-bb71-6b0d7a74c1c8",
715
+ "81a03e88-a76c-4335-be92-01c433e692cf"
716
+ ]
717
+ },
718
+ "0d4bfe6f-ab3b-434a-bb71-6b0d7a74c1c8": {
719
+ "size": {
720
+ "width": 60,
721
+ "height": 60
722
+ },
723
+ "position": {
724
+ "x": -200,
725
+ "y": 1080
726
+ },
727
+ "z": 3,
728
+ "parent": "5f563655-d27c-492d-9458-8b36dd950a7e",
729
+ "embeds": []
730
+ },
731
+ "81a03e88-a76c-4335-be92-01c433e692cf": {
732
+ "size": {
733
+ "width": 60,
734
+ "height": 60
735
+ },
736
+ "position": {
737
+ "x": -200,
738
+ "y": 1190
739
+ },
740
+ "z": 3,
741
+ "parent": "5f563655-d27c-492d-9458-8b36dd950a7e",
742
+ "embeds": []
743
+ },
744
+ "e13eddcb-d508-41ed-86ba-52721609f64d": {
745
+ "size": {
746
+ "width": 180,
747
+ "height": 260
748
+ },
749
+ "position": {
750
+ "x": 510,
751
+ "y": 1030
752
+ },
753
+ "z": 2,
754
+ "parent": "36f558fe-7a2b-4a24-9edb-3b9a10d33217",
755
+ "embeds": []
756
+ },
757
+ "c88e3060-c887-4c7a-8b25-74dba8c01b1f": {
758
+ "size": {
759
+ "width": 290,
760
+ "height": 110
761
+ },
762
+ "position": {
763
+ "x": 90,
764
+ "y": 770
765
+ },
766
+ "z": 2,
767
+ "parent": "36f558fe-7a2b-4a24-9edb-3b9a10d33217",
768
+ "embeds": []
769
+ },
770
+ "c1a742ea-be11-4f90-9edb-00340f314443": {
771
+ "source": {
772
+ "id": "5f563655-d27c-492d-9458-8b36dd950a7e"
773
+ },
774
+ "target": {
775
+ "id": "c88e3060-c887-4c7a-8b25-74dba8c01b1f"
776
+ },
777
+ "z": 2
778
+ },
779
+ "6459bdbb-c25c-4bd7-9ea6-e78fc7da90d0": {
780
+ "source": {
781
+ "id": "e13eddcb-d508-41ed-86ba-52721609f64d"
782
+ },
783
+ "target": {
784
+ "id": "c88e3060-c887-4c7a-8b25-74dba8c01b1f"
785
+ },
786
+ "z": 2
787
+ },
788
+ "9d9f7c73-1580-4f8e-8463-6e27fb43e766": {
789
+ "size": {
790
+ "width": 300,
791
+ "height": 380
792
+ },
793
+ "position": {
794
+ "x": -310,
795
+ "y": 570
796
+ },
797
+ "z": 2,
798
+ "parent": "36f558fe-7a2b-4a24-9edb-3b9a10d33217",
799
+ "embeds": [
800
+ "6a00b44b-c40f-4464-aad5-1d54e3772398",
801
+ "f22aa599-4f7e-4715-a098-41e10c081523",
802
+ "c8ec5a7a-62cb-4406-9f2d-0b5a564fd966",
803
+ "8b8f955d-4b13-43ad-bd92-88a983aba05e",
804
+ "fc400079-4e29-449d-9261-802c07e90664"
805
+ ]
806
+ },
807
+ "6a00b44b-c40f-4464-aad5-1d54e3772398": {
808
+ "size": {
809
+ "width": 60,
810
+ "height": 60
811
+ },
812
+ "position": {
813
+ "x": -250,
814
+ "y": 830
815
+ },
816
+ "z": 3,
817
+ "parent": "9d9f7c73-1580-4f8e-8463-6e27fb43e766",
818
+ "embeds": []
819
+ },
820
+ "f22aa599-4f7e-4715-a098-41e10c081523": {
821
+ "size": {
822
+ "width": 60,
823
+ "height": 60
824
+ },
825
+ "position": {
826
+ "x": -140,
827
+ "y": 790
828
+ },
829
+ "z": 3,
830
+ "parent": "9d9f7c73-1580-4f8e-8463-6e27fb43e766",
831
+ "embeds": []
832
+ },
833
+ "c8ec5a7a-62cb-4406-9f2d-0b5a564fd966": {
834
+ "size": {
835
+ "width": 60,
836
+ "height": 60
837
+ },
838
+ "position": {
839
+ "x": -250,
840
+ "y": 610
841
+ },
842
+ "z": 3,
843
+ "parent": "9d9f7c73-1580-4f8e-8463-6e27fb43e766",
844
+ "embeds": []
845
+ },
846
+ "8b8f955d-4b13-43ad-bd92-88a983aba05e": {
847
+ "size": {
848
+ "width": 60,
849
+ "height": 60
850
+ },
851
+ "position": {
852
+ "x": -250,
853
+ "y": 720
854
+ },
855
+ "z": 3,
856
+ "parent": "9d9f7c73-1580-4f8e-8463-6e27fb43e766",
857
+ "embeds": []
858
+ },
859
+ "fc400079-4e29-449d-9261-802c07e90664": {
860
+ "size": {
861
+ "width": 60,
862
+ "height": 60
863
+ },
864
+ "position": {
865
+ "x": -140,
866
+ "y": 690
867
+ },
868
+ "z": 3,
869
+ "parent": "9d9f7c73-1580-4f8e-8463-6e27fb43e766",
870
+ "embeds": []
871
+ },
872
+ "35457506-b697-467e-925b-61a48305e0da": {
873
+ "size": {
874
+ "width": 180,
875
+ "height": 330
876
+ },
877
+ "position": {
878
+ "x": 510,
879
+ "y": 580
880
+ },
881
+ "z": 2,
882
+ "parent": "36f558fe-7a2b-4a24-9edb-3b9a10d33217",
883
+ "embeds": [
884
+ "3b3697f1-2874-4073-847a-c2814e9c4336"
885
+ ]
886
+ },
887
+ "92a83719-48bf-4e04-a3cd-0f8b99305053": {
888
+ "source": {
889
+ "id": "7354dd3a-e180-418e-8cd2-a9b2ad2a4666"
890
+ },
891
+ "target": {
892
+ "id": "36f558fe-7a2b-4a24-9edb-3b9a10d33217"
893
+ },
894
+ "z": 1
895
+ },
896
+ "3b3697f1-2874-4073-847a-c2814e9c4336": {
897
+ "size": {
898
+ "width": 60,
899
+ "height": 60
900
+ },
901
+ "position": {
902
+ "x": 560,
903
+ "y": 720
904
+ },
905
+ "z": 3,
906
+ "parent": "35457506-b697-467e-925b-61a48305e0da",
907
+ "embeds": [],
908
+ "references": [
909
+ "7354dd3a-e180-418e-8cd2-a9b2ad2a4666"
910
+ ],
911
+ "dependson": [
912
+ "92a83719-48bf-4e04-a3cd-0f8b99305053"
913
+ ]
914
+ },
915
+ "d17f3169-9687-4907-ac33-04ce215fded7": {
916
+ "size": {
917
+ "width": 290,
918
+ "height": 120
919
+ },
920
+ "position": {
921
+ "x": 90,
922
+ "y": 630
923
+ },
924
+ "z": 2,
925
+ "parent": "36f558fe-7a2b-4a24-9edb-3b9a10d33217",
926
+ "embeds": []
927
+ },
928
+ "de86ddc8-8415-41a5-a905-b1bda5ba3fed": {
929
+ "source": {
930
+ "id": "9d9f7c73-1580-4f8e-8463-6e27fb43e766"
931
+ },
932
+ "target": {
933
+ "id": "d17f3169-9687-4907-ac33-04ce215fded7"
934
+ },
935
+ "z": 2
936
+ },
937
+ "6033dd6a-6b5b-4b0a-9e41-a59a779c5a61": {
938
+ "source": {
939
+ "id": "35457506-b697-467e-925b-61a48305e0da"
940
+ },
941
+ "target": {
942
+ "id": "d17f3169-9687-4907-ac33-04ce215fded7"
943
+ },
944
+ "z": 2
945
+ },
946
+ "21cff9ba-e2c6-4d76-80d2-7f10d6b618b0": {
947
+ "size": {
948
+ "width": 290,
949
+ "height": 100
950
+ },
951
+ "position": {
952
+ "x": 90,
953
+ "y": 1040
954
+ },
955
+ "z": 2,
956
+ "parent": "36f558fe-7a2b-4a24-9edb-3b9a10d33217",
957
+ "embeds": []
958
+ },
959
+ "f950a56e-a1ed-4e65-97df-1b8869da8b59": {
960
+ "size": {
961
+ "width": 290,
962
+ "height": 100
963
+ },
964
+ "position": {
965
+ "x": 90,
966
+ "y": 1170
967
+ },
968
+ "z": 2,
969
+ "parent": "36f558fe-7a2b-4a24-9edb-3b9a10d33217",
970
+ "embeds": []
971
+ },
972
+ "ff1a00b2-0c71-4500-a421-08255279d2f0": {
973
+ "source": {
974
+ "id": "35457506-b697-467e-925b-61a48305e0da"
975
+ },
976
+ "target": {
977
+ "id": "21cff9ba-e2c6-4d76-80d2-7f10d6b618b0"
978
+ },
979
+ "z": 2
980
+ },
981
+ "353e5d2f-7968-4636-a916-b4d1305ad23f": {
982
+ "source": {
983
+ "id": "9d9f7c73-1580-4f8e-8463-6e27fb43e766"
984
+ },
985
+ "target": {
986
+ "id": "21cff9ba-e2c6-4d76-80d2-7f10d6b618b0"
987
+ },
988
+ "z": 2
989
+ },
990
+ "6237f72f-664d-4c7d-bbb9-52980fb4f620": {
991
+ "source": {
992
+ "id": "e13eddcb-d508-41ed-86ba-52721609f64d"
993
+ },
994
+ "target": {
995
+ "id": "f950a56e-a1ed-4e65-97df-1b8869da8b59"
996
+ },
997
+ "z": 2
998
+ },
999
+ "84446bb6-0790-4a7b-868e-776127af1b1a": {
1000
+ "source": {
1001
+ "id": "5f563655-d27c-492d-9458-8b36dd950a7e"
1002
+ },
1003
+ "target": {
1004
+ "id": "f950a56e-a1ed-4e65-97df-1b8869da8b59"
1005
+ },
1006
+ "z": 2
1007
+ }
1008
+ }
1009
+ }
1010
+ }