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,790 @@
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
+ },
13
+ "Mappings": {
14
+ "SubnetConfig": {
15
+ "VPC": {
16
+ "CIDR": "10.0.0.0/16"
17
+ },
18
+ "Public": {
19
+ "CIDR": "10.0.0.0/24"
20
+ },
21
+ "Private": {
22
+ "CIDR": "10.0.1.0/24"
23
+ }
24
+ }
25
+ },
26
+ "Resources": {
27
+ "VPC": {
28
+ "Type": "AWS::EC2::VPC",
29
+ "Properties": {
30
+ "CidrBlock": {
31
+ "Fn::FindInMap": [
32
+ "SubnetConfig",
33
+ "VPC",
34
+ "CIDR"
35
+ ]
36
+ },
37
+ "Tags": [
38
+ {
39
+ "Key": "Application",
40
+ "Value": {
41
+ "Ref": "AWS::StackId"
42
+ }
43
+ },
44
+ {
45
+ "Key": "Network",
46
+ "Value": "Public"
47
+ }
48
+ ]
49
+ },
50
+ "Metadata": {
51
+ "AWS::CloudFormation::Designer": {
52
+ "id": "36f558fe-7a2b-4a24-9edb-3b9a10d33217"
53
+ }
54
+ }
55
+ },
56
+ "PublicSubnet": {
57
+ "Type": "AWS::EC2::Subnet",
58
+ "Properties": {
59
+ "VpcId": {
60
+ "Ref": "VPC"
61
+ },
62
+ "CidrBlock": {
63
+ "Fn::FindInMap": [
64
+ "SubnetConfig",
65
+ "Public",
66
+ "CIDR"
67
+ ]
68
+ },
69
+ "AvailabilityZone": {"Ref": "AZ1"},
70
+ "Tags": [
71
+ {
72
+ "Key": "Application",
73
+ "Value": {
74
+ "Ref": "AWS::StackId"
75
+ }
76
+ },
77
+ {
78
+ "Key": "Network",
79
+ "Value": "Public"
80
+ }
81
+ ]
82
+ },
83
+ "Metadata": {
84
+ "AWS::CloudFormation::Designer": {
85
+ "id": "d17f3169-9687-4907-ac33-04ce215fded7"
86
+ }
87
+ }
88
+ },
89
+ "InternetGateway": {
90
+ "Type": "AWS::EC2::InternetGateway",
91
+ "Properties": {
92
+ "Tags": [
93
+ {
94
+ "Key": "Application",
95
+ "Value": {
96
+ "Ref": "AWS::StackId"
97
+ }
98
+ },
99
+ {
100
+ "Key": "Network",
101
+ "Value": "Public"
102
+ }
103
+ ]
104
+ },
105
+ "Metadata": {
106
+ "AWS::CloudFormation::Designer": {
107
+ "id": "7354dd3a-e180-418e-8cd2-a9b2ad2a4666"
108
+ }
109
+ }
110
+ },
111
+ "GatewayToInternet": {
112
+ "Type": "AWS::EC2::VPCGatewayAttachment",
113
+ "Properties": {
114
+ "VpcId": {
115
+ "Ref": "VPC"
116
+ },
117
+ "InternetGatewayId": {
118
+ "Ref": "InternetGateway"
119
+ }
120
+ },
121
+ "Metadata": {
122
+ "AWS::CloudFormation::Designer": {
123
+ "id": "92a83719-48bf-4e04-a3cd-0f8b99305053"
124
+ }
125
+ }
126
+ },
127
+ "PublicRouteTable": {
128
+ "Type": "AWS::EC2::RouteTable",
129
+ "Properties": {
130
+ "VpcId": {
131
+ "Ref": "VPC"
132
+ },
133
+ "Tags": [
134
+ {
135
+ "Key": "Application",
136
+ "Value": {
137
+ "Ref": "AWS::StackId"
138
+ }
139
+ },
140
+ {
141
+ "Key": "Network",
142
+ "Value": "Public"
143
+ }
144
+ ]
145
+ },
146
+ "Metadata": {
147
+ "AWS::CloudFormation::Designer": {
148
+ "id": "35457506-b697-467e-925b-61a48305e0da"
149
+ }
150
+ }
151
+ },
152
+ "PublicRoute": {
153
+ "Type": "AWS::EC2::Route",
154
+ "DependsOn": "GatewayToInternet",
155
+ "Properties": {
156
+ "RouteTableId": {
157
+ "Ref": "PublicRouteTable"
158
+ },
159
+ "DestinationCidrBlock": "0.0.0.0/0",
160
+ "GatewayId": {
161
+ "Ref": "InternetGateway"
162
+ }
163
+ },
164
+ "Metadata": {
165
+ "AWS::CloudFormation::Designer": {
166
+ "id": "3b3697f1-2874-4073-847a-c2814e9c4336"
167
+ }
168
+ }
169
+ },
170
+ "PublicSubnetRouteTableAssociation": {
171
+ "Type": "AWS::EC2::SubnetRouteTableAssociation",
172
+ "Properties": {
173
+ "SubnetId": {
174
+ "Ref": "PublicSubnet"
175
+ },
176
+ "RouteTableId": {
177
+ "Ref": "PublicRouteTable"
178
+ }
179
+ },
180
+ "Metadata": {
181
+ "AWS::CloudFormation::Designer": {
182
+ "id": "6033dd6a-6b5b-4b0a-9e41-a59a779c5a61"
183
+ }
184
+ }
185
+ },
186
+ "PublicNetworkAcl": {
187
+ "Type": "AWS::EC2::NetworkAcl",
188
+ "Properties": {
189
+ "VpcId": {
190
+ "Ref": "VPC"
191
+ },
192
+ "Tags": [
193
+ {
194
+ "Key": "Application",
195
+ "Value": {
196
+ "Ref": "AWS::StackId"
197
+ }
198
+ },
199
+ {
200
+ "Key": "Network",
201
+ "Value": "Public"
202
+ }
203
+ ]
204
+ },
205
+ "Metadata": {
206
+ "AWS::CloudFormation::Designer": {
207
+ "id": "9d9f7c73-1580-4f8e-8463-6e27fb43e766"
208
+ }
209
+ }
210
+ },
211
+ "InboundHTTPPublicNetworkAclEntry": {
212
+ "Type": "AWS::EC2::NetworkAclEntry",
213
+ "Properties": {
214
+ "NetworkAclId": {
215
+ "Ref": "PublicNetworkAcl"
216
+ },
217
+ "RuleNumber": "100",
218
+ "Protocol": "6",
219
+ "RuleAction": "allow",
220
+ "Egress": "false",
221
+ "CidrBlock": "0.0.0.0/0",
222
+ "PortRange": {
223
+ "From": "80",
224
+ "To": "80"
225
+ }
226
+ },
227
+ "Metadata": {
228
+ "AWS::CloudFormation::Designer": {
229
+ "id": "fc400079-4e29-449d-9261-802c07e90664"
230
+ }
231
+ }
232
+ },
233
+ "InboundHTTPSPublicNetworkAclEntry": {
234
+ "Type": "AWS::EC2::NetworkAclEntry",
235
+ "Properties": {
236
+ "NetworkAclId": {
237
+ "Ref": "PublicNetworkAcl"
238
+ },
239
+ "RuleNumber": "101",
240
+ "Protocol": "6",
241
+ "RuleAction": "allow",
242
+ "Egress": "false",
243
+ "CidrBlock": "0.0.0.0/0",
244
+ "PortRange": {
245
+ "From": "443",
246
+ "To": "443"
247
+ }
248
+ },
249
+ "Metadata": {
250
+ "AWS::CloudFormation::Designer": {
251
+ "id": "8b8f955d-4b13-43ad-bd92-88a983aba05e"
252
+ }
253
+ }
254
+ },
255
+ "InboundSSHPublicNetworkAclEntry": {
256
+ "Type": "AWS::EC2::NetworkAclEntry",
257
+ "Properties": {
258
+ "NetworkAclId": {
259
+ "Ref": "PublicNetworkAcl"
260
+ },
261
+ "RuleNumber": "102",
262
+ "Protocol": "6",
263
+ "RuleAction": "allow",
264
+ "Egress": "false",
265
+ "CidrBlock": "0.0.0.0/0",
266
+ "PortRange": {
267
+ "From": "22",
268
+ "To": "22"
269
+ }
270
+ },
271
+ "Metadata": {
272
+ "AWS::CloudFormation::Designer": {
273
+ "id": "c8ec5a7a-62cb-4406-9f2d-0b5a564fd966"
274
+ }
275
+ }
276
+ },
277
+ "InboundEphemeralPublicNetworkAclEntry": {
278
+ "Type": "AWS::EC2::NetworkAclEntry",
279
+ "Properties": {
280
+ "NetworkAclId": {
281
+ "Ref": "PublicNetworkAcl"
282
+ },
283
+ "RuleNumber": "103",
284
+ "Protocol": "6",
285
+ "RuleAction": "allow",
286
+ "Egress": "false",
287
+ "CidrBlock": "0.0.0.0/0",
288
+ "PortRange": {
289
+ "From": "1024",
290
+ "To": "65535"
291
+ }
292
+ },
293
+ "Metadata": {
294
+ "AWS::CloudFormation::Designer": {
295
+ "id": "f22aa599-4f7e-4715-a098-41e10c081523"
296
+ }
297
+ }
298
+ },
299
+ "OutboundPublicNetworkAclEntry": {
300
+ "Type": "AWS::EC2::NetworkAclEntry",
301
+ "Properties": {
302
+ "NetworkAclId": {
303
+ "Ref": "PublicNetworkAcl"
304
+ },
305
+ "RuleNumber": "100",
306
+ "Protocol": "6",
307
+ "RuleAction": "allow",
308
+ "Egress": "true",
309
+ "CidrBlock": "0.0.0.0/0",
310
+ "PortRange": {
311
+ "From": "0",
312
+ "To": "65535"
313
+ }
314
+ },
315
+ "Metadata": {
316
+ "AWS::CloudFormation::Designer": {
317
+ "id": "6a00b44b-c40f-4464-aad5-1d54e3772398"
318
+ }
319
+ }
320
+ },
321
+ "PublicSubnetNetworkAclAssociation": {
322
+ "Type": "AWS::EC2::SubnetNetworkAclAssociation",
323
+ "Properties": {
324
+ "SubnetId": {
325
+ "Ref": "PublicSubnet"
326
+ },
327
+ "NetworkAclId": {
328
+ "Ref": "PublicNetworkAcl"
329
+ }
330
+ },
331
+ "Metadata": {
332
+ "AWS::CloudFormation::Designer": {
333
+ "id": "de86ddc8-8415-41a5-a905-b1bda5ba3fed"
334
+ }
335
+ }
336
+ },
337
+ "PrivateSubnet": {
338
+ "Type": "AWS::EC2::Subnet",
339
+ "Properties": {
340
+ "VpcId": {
341
+ "Ref": "VPC"
342
+ },
343
+ "CidrBlock": {
344
+ "Fn::FindInMap": [
345
+ "SubnetConfig",
346
+ "Private",
347
+ "CIDR"
348
+ ]
349
+ },
350
+ "AvailabilityZone": {"Ref": "AZ1"},
351
+ "Tags": [
352
+ {
353
+ "Key": "Application",
354
+ "Value": {
355
+ "Ref": "AWS::StackId"
356
+ }
357
+ },
358
+ {
359
+ "Key": "Network",
360
+ "Value": "Private"
361
+ }
362
+ ]
363
+ },
364
+ "Metadata": {
365
+ "AWS::CloudFormation::Designer": {
366
+ "id": "c88e3060-c887-4c7a-8b25-74dba8c01b1f"
367
+ }
368
+ }
369
+ },
370
+ "PrivateRouteTable": {
371
+ "Type": "AWS::EC2::RouteTable",
372
+ "Properties": {
373
+ "VpcId": {
374
+ "Ref": "VPC"
375
+ },
376
+ "Tags": [
377
+ {
378
+ "Key": "Application",
379
+ "Value": {
380
+ "Ref": "AWS::StackId"
381
+ }
382
+ },
383
+ {
384
+ "Key": "Network",
385
+ "Value": "Private"
386
+ }
387
+ ]
388
+ },
389
+ "Metadata": {
390
+ "AWS::CloudFormation::Designer": {
391
+ "id": "e13eddcb-d508-41ed-86ba-52721609f64d"
392
+ }
393
+ }
394
+ },
395
+ "PrivateSubnetRouteTableAssociation": {
396
+ "Type": "AWS::EC2::SubnetRouteTableAssociation",
397
+ "Properties": {
398
+ "SubnetId": {
399
+ "Ref": "PrivateSubnet"
400
+ },
401
+ "RouteTableId": {
402
+ "Ref": "PrivateRouteTable"
403
+ }
404
+ },
405
+ "Metadata": {
406
+ "AWS::CloudFormation::Designer": {
407
+ "id": "6459bdbb-c25c-4bd7-9ea6-e78fc7da90d0"
408
+ }
409
+ }
410
+ },
411
+ "PrivateNetworkAcl": {
412
+ "Type": "AWS::EC2::NetworkAcl",
413
+ "Properties": {
414
+ "VpcId": {
415
+ "Ref": "VPC"
416
+ },
417
+ "Tags": [
418
+ {
419
+ "Key": "Application",
420
+ "Value": {
421
+ "Ref": "AWS::StackId"
422
+ }
423
+ },
424
+ {
425
+ "Key": "Network",
426
+ "Value": "Private"
427
+ }
428
+ ]
429
+ },
430
+ "Metadata": {
431
+ "AWS::CloudFormation::Designer": {
432
+ "id": "5f563655-d27c-492d-9458-8b36dd950a7e"
433
+ }
434
+ }
435
+ },
436
+ "InboundPrivateNetworkAclEntry": {
437
+ "Type": "AWS::EC2::NetworkAclEntry",
438
+ "Properties": {
439
+ "NetworkAclId": {
440
+ "Ref": "PrivateNetworkAcl"
441
+ },
442
+ "RuleNumber": "100",
443
+ "Protocol": "6",
444
+ "RuleAction": "allow",
445
+ "Egress": "false",
446
+ "CidrBlock": "0.0.0.0/0",
447
+ "PortRange": {
448
+ "From": "0",
449
+ "To": "65535"
450
+ }
451
+ },
452
+ "Metadata": {
453
+ "AWS::CloudFormation::Designer": {
454
+ "id": "81a03e88-a76c-4335-be92-01c433e692cf"
455
+ }
456
+ }
457
+ },
458
+ "OutBoundPrivateNetworkAclEntry": {
459
+ "Type": "AWS::EC2::NetworkAclEntry",
460
+ "Properties": {
461
+ "NetworkAclId": {
462
+ "Ref": "PrivateNetworkAcl"
463
+ },
464
+ "RuleNumber": "100",
465
+ "Protocol": "6",
466
+ "RuleAction": "allow",
467
+ "Egress": "true",
468
+ "CidrBlock": "0.0.0.0/0",
469
+ "PortRange": {
470
+ "From": "0",
471
+ "To": "65535"
472
+ }
473
+ },
474
+ "Metadata": {
475
+ "AWS::CloudFormation::Designer": {
476
+ "id": "0d4bfe6f-ab3b-434a-bb71-6b0d7a74c1c8"
477
+ }
478
+ }
479
+ },
480
+ "PrivateSubnetNetworkAclAssociation": {
481
+ "Type": "AWS::EC2::SubnetNetworkAclAssociation",
482
+ "Properties": {
483
+ "SubnetId": {
484
+ "Ref": "PrivateSubnet"
485
+ },
486
+ "NetworkAclId": {
487
+ "Ref": "PrivateNetworkAcl"
488
+ }
489
+ },
490
+ "Metadata": {
491
+ "AWS::CloudFormation::Designer": {
492
+ "id": "c1a742ea-be11-4f90-9edb-00340f314443"
493
+ }
494
+ }
495
+ }
496
+ },
497
+ "Outputs": {
498
+ "VPCID" : {
499
+ "Value" : { "Ref" : "VPC" },
500
+ "Description" : "VPC ID"
501
+ },
502
+ "SUBNETPUB1" : {
503
+ "Value" : { "Ref" : "PublicSubnet" },
504
+ "Description" : "PublicSubnet1"
505
+ },
506
+ "SUBNETPRI1" : {
507
+ "Value" : { "Ref" : "PrivateSubnet" },
508
+ "Description" : "PrivateSubnet1"
509
+ }
510
+ },
511
+ "Metadata": {
512
+ "AWS::CloudFormation::Designer": {
513
+ "7354dd3a-e180-418e-8cd2-a9b2ad2a4666": {
514
+ "size": {
515
+ "width": 60,
516
+ "height": 60
517
+ },
518
+ "position": {
519
+ "x": 1250,
520
+ "y": 190
521
+ },
522
+ "z": 1,
523
+ "embeds": []
524
+ },
525
+ "36f558fe-7a2b-4a24-9edb-3b9a10d33217": {
526
+ "size": {
527
+ "width": 1120,
528
+ "height": 670
529
+ },
530
+ "position": {
531
+ "x": 60,
532
+ "y": 90
533
+ },
534
+ "z": 1,
535
+ "embeds": [
536
+ "5f563655-d27c-492d-9458-8b36dd950a7e",
537
+ "c88e3060-c887-4c7a-8b25-74dba8c01b1f",
538
+ "9d9f7c73-1580-4f8e-8463-6e27fb43e766",
539
+ "35457506-b697-467e-925b-61a48305e0da",
540
+ "d17f3169-9687-4907-ac33-04ce215fded7",
541
+ "e13eddcb-d508-41ed-86ba-52721609f64d"
542
+ ]
543
+ },
544
+ "5f563655-d27c-492d-9458-8b36dd950a7e": {
545
+ "size": {
546
+ "width": 420,
547
+ "height": 240
548
+ },
549
+ "position": {
550
+ "x": 80,
551
+ "y": 490
552
+ },
553
+ "z": 2,
554
+ "parent": "36f558fe-7a2b-4a24-9edb-3b9a10d33217",
555
+ "embeds": [
556
+ "0d4bfe6f-ab3b-434a-bb71-6b0d7a74c1c8",
557
+ "81a03e88-a76c-4335-be92-01c433e692cf"
558
+ ]
559
+ },
560
+ "0d4bfe6f-ab3b-434a-bb71-6b0d7a74c1c8": {
561
+ "size": {
562
+ "width": 60,
563
+ "height": 60
564
+ },
565
+ "position": {
566
+ "x": 110,
567
+ "y": 550
568
+ },
569
+ "z": 3,
570
+ "parent": "5f563655-d27c-492d-9458-8b36dd950a7e",
571
+ "embeds": []
572
+ },
573
+ "81a03e88-a76c-4335-be92-01c433e692cf": {
574
+ "size": {
575
+ "width": 60,
576
+ "height": 60
577
+ },
578
+ "position": {
579
+ "x": 230,
580
+ "y": 550
581
+ },
582
+ "z": 3,
583
+ "parent": "5f563655-d27c-492d-9458-8b36dd950a7e",
584
+ "embeds": []
585
+ },
586
+ "e13eddcb-d508-41ed-86ba-52721609f64d": {
587
+ "size": {
588
+ "width": 240,
589
+ "height": 230
590
+ },
591
+ "position": {
592
+ "x": 910,
593
+ "y": 490
594
+ },
595
+ "z": 2,
596
+ "parent": "36f558fe-7a2b-4a24-9edb-3b9a10d33217",
597
+ "embeds": []
598
+ },
599
+ "c88e3060-c887-4c7a-8b25-74dba8c01b1f": {
600
+ "size": {
601
+ "width": 190,
602
+ "height": 230
603
+ },
604
+ "position": {
605
+ "x": 620,
606
+ "y": 490
607
+ },
608
+ "z": 2,
609
+ "parent": "36f558fe-7a2b-4a24-9edb-3b9a10d33217",
610
+ "embeds": []
611
+ },
612
+ "c1a742ea-be11-4f90-9edb-00340f314443": {
613
+ "source": {
614
+ "id": "5f563655-d27c-492d-9458-8b36dd950a7e"
615
+ },
616
+ "target": {
617
+ "id": "c88e3060-c887-4c7a-8b25-74dba8c01b1f"
618
+ },
619
+ "z": 2
620
+ },
621
+ "6459bdbb-c25c-4bd7-9ea6-e78fc7da90d0": {
622
+ "source": {
623
+ "id": "e13eddcb-d508-41ed-86ba-52721609f64d"
624
+ },
625
+ "target": {
626
+ "id": "c88e3060-c887-4c7a-8b25-74dba8c01b1f"
627
+ },
628
+ "z": 2
629
+ },
630
+ "9d9f7c73-1580-4f8e-8463-6e27fb43e766": {
631
+ "size": {
632
+ "width": 420,
633
+ "height": 330
634
+ },
635
+ "position": {
636
+ "x": 80,
637
+ "y": 130
638
+ },
639
+ "z": 2,
640
+ "parent": "36f558fe-7a2b-4a24-9edb-3b9a10d33217",
641
+ "embeds": [
642
+ "6a00b44b-c40f-4464-aad5-1d54e3772398",
643
+ "f22aa599-4f7e-4715-a098-41e10c081523",
644
+ "c8ec5a7a-62cb-4406-9f2d-0b5a564fd966",
645
+ "8b8f955d-4b13-43ad-bd92-88a983aba05e",
646
+ "fc400079-4e29-449d-9261-802c07e90664"
647
+ ]
648
+ },
649
+ "6a00b44b-c40f-4464-aad5-1d54e3772398": {
650
+ "size": {
651
+ "width": 60,
652
+ "height": 60
653
+ },
654
+ "position": {
655
+ "x": 110,
656
+ "y": 190
657
+ },
658
+ "z": 3,
659
+ "parent": "9d9f7c73-1580-4f8e-8463-6e27fb43e766",
660
+ "embeds": []
661
+ },
662
+ "f22aa599-4f7e-4715-a098-41e10c081523": {
663
+ "size": {
664
+ "width": 60,
665
+ "height": 60
666
+ },
667
+ "position": {
668
+ "x": 230,
669
+ "y": 190
670
+ },
671
+ "z": 3,
672
+ "parent": "9d9f7c73-1580-4f8e-8463-6e27fb43e766",
673
+ "embeds": []
674
+ },
675
+ "c8ec5a7a-62cb-4406-9f2d-0b5a564fd966": {
676
+ "size": {
677
+ "width": 60,
678
+ "height": 60
679
+ },
680
+ "position": {
681
+ "x": 110,
682
+ "y": 310
683
+ },
684
+ "z": 3,
685
+ "parent": "9d9f7c73-1580-4f8e-8463-6e27fb43e766",
686
+ "embeds": []
687
+ },
688
+ "8b8f955d-4b13-43ad-bd92-88a983aba05e": {
689
+ "size": {
690
+ "width": 60,
691
+ "height": 60
692
+ },
693
+ "position": {
694
+ "x": 230,
695
+ "y": 310
696
+ },
697
+ "z": 3,
698
+ "parent": "9d9f7c73-1580-4f8e-8463-6e27fb43e766",
699
+ "embeds": []
700
+ },
701
+ "fc400079-4e29-449d-9261-802c07e90664": {
702
+ "size": {
703
+ "width": 60,
704
+ "height": 60
705
+ },
706
+ "position": {
707
+ "x": 350,
708
+ "y": 190
709
+ },
710
+ "z": 3,
711
+ "parent": "9d9f7c73-1580-4f8e-8463-6e27fb43e766",
712
+ "embeds": []
713
+ },
714
+ "35457506-b697-467e-925b-61a48305e0da": {
715
+ "size": {
716
+ "width": 240,
717
+ "height": 240
718
+ },
719
+ "position": {
720
+ "x": 910,
721
+ "y": 180
722
+ },
723
+ "z": 2,
724
+ "parent": "36f558fe-7a2b-4a24-9edb-3b9a10d33217",
725
+ "embeds": [
726
+ "3b3697f1-2874-4073-847a-c2814e9c4336"
727
+ ]
728
+ },
729
+ "92a83719-48bf-4e04-a3cd-0f8b99305053": {
730
+ "source": {
731
+ "id": "7354dd3a-e180-418e-8cd2-a9b2ad2a4666"
732
+ },
733
+ "target": {
734
+ "id": "36f558fe-7a2b-4a24-9edb-3b9a10d33217"
735
+ },
736
+ "z": 1
737
+ },
738
+ "3b3697f1-2874-4073-847a-c2814e9c4336": {
739
+ "size": {
740
+ "width": 60,
741
+ "height": 60
742
+ },
743
+ "position": {
744
+ "x": 940,
745
+ "y": 240
746
+ },
747
+ "z": 3,
748
+ "parent": "35457506-b697-467e-925b-61a48305e0da",
749
+ "embeds": [],
750
+ "references": [
751
+ "7354dd3a-e180-418e-8cd2-a9b2ad2a4666"
752
+ ],
753
+ "dependson": [
754
+ "92a83719-48bf-4e04-a3cd-0f8b99305053"
755
+ ]
756
+ },
757
+ "d17f3169-9687-4907-ac33-04ce215fded7": {
758
+ "size": {
759
+ "width": 200,
760
+ "height": 230
761
+ },
762
+ "position": {
763
+ "x": 610,
764
+ "y": 180
765
+ },
766
+ "z": 2,
767
+ "parent": "36f558fe-7a2b-4a24-9edb-3b9a10d33217",
768
+ "embeds": []
769
+ },
770
+ "de86ddc8-8415-41a5-a905-b1bda5ba3fed": {
771
+ "source": {
772
+ "id": "9d9f7c73-1580-4f8e-8463-6e27fb43e766"
773
+ },
774
+ "target": {
775
+ "id": "d17f3169-9687-4907-ac33-04ce215fded7"
776
+ },
777
+ "z": 2
778
+ },
779
+ "6033dd6a-6b5b-4b0a-9e41-a59a779c5a61": {
780
+ "source": {
781
+ "id": "35457506-b697-467e-925b-61a48305e0da"
782
+ },
783
+ "target": {
784
+ "id": "d17f3169-9687-4907-ac33-04ce215fded7"
785
+ },
786
+ "z": 2
787
+ }
788
+ }
789
+ }
790
+ }