-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathmain.js
7888 lines (7404 loc) · 692 KB
/
main.js
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
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
(window["webpackJsonp"] = window["webpackJsonp"] || []).push([["main"],{
/***/ "./src/$$_lazy_route_resource lazy recursive":
/*!**********************************************************!*\
!*** ./src/$$_lazy_route_resource lazy namespace object ***!
\**********************************************************/
/*! no static exports found */
/***/ (function(module, exports) {
function webpackEmptyAsyncContext(req) {
// Here Promise.resolve().then() is used instead of new Promise() to prevent
// uncaught exception popping up in devtools
return Promise.resolve().then(function() {
var e = new Error("Cannot find module '" + req + "'");
e.code = 'MODULE_NOT_FOUND';
throw e;
});
}
webpackEmptyAsyncContext.keys = function() { return []; };
webpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext;
module.exports = webpackEmptyAsyncContext;
webpackEmptyAsyncContext.id = "./src/$$_lazy_route_resource lazy recursive";
/***/ }),
/***/ "./src/app/about-page/about-page.component.css":
/*!*****************************************************!*\
!*** ./src/app/about-page/about-page.component.css ***!
\*****************************************************/
/*! no static exports found */
/***/ (function(module, exports) {
module.exports = "\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2Fib3V0LXBhZ2UvYWJvdXQtcGFnZS5jb21wb25lbnQuY3NzIn0= */"
/***/ }),
/***/ "./src/app/about-page/about-page.component.html":
/*!******************************************************!*\
!*** ./src/app/about-page/about-page.component.html ***!
\******************************************************/
/*! no static exports found */
/***/ (function(module, exports) {
module.exports = "<img src=\"../../assets/img/cloudkast-logo.jpg\" height=\"50\" width=\"250\" alt=\"logo\">\n\n<h4 mat-line>\n Authoring AWS CloudFormation templates is a dreadful task (and so is writing any long piece of complex\n json or yaml for that matter). Parsing JSON-formatted text files to see the resources that are in your template and their relationships can be difficult.\n When you author template resources in a text editor, you must manually edit JSON or YAML, which can be tedious and error-prone.\nThis has led to emergence of many enterprise and community driven tools in the market over the last few years. These tools can be broadly\ndivided into the following categories:\n<mat-list role=\"list\">\n <li>IDE plugins e.g. Jetbrains plugin for CloudFormation etc.</li>\n <li>GUI based tools e.g. AWS CloudFormation designer</li>\n <li>DSLs e.g. GoFormation, cfndsl, SparkleFormation, Troposphere etc.</li>\n </mat-list>\n All these existing tools, however useful, end up pushing up the entry barrier even higher and thus \n fall short in one criterion: <i>Quick Adaptability.</i>\n</h4>\n\n<h4 mat-line >\n Ever wished if you could generate AWS CloudFormation templates just the way you generate\n AWS IAM policies using AWS policy generator? Well, now you can with CloudKast. CloudKast is an online AWS cloudformation template generator. \n CloudKast is well suited for busy developers, junior administrators and cloud architects alike.\n The following are the features\n provided by CloudKast:\n <mat-list role=\"list\">\n <li>An intuitive form-based UI interface to generate CloudFormation templates online.</li>\n <li>Tooltips next to each field providing short description along with valid values it can hold wherever applicable.</li>\n <li>Resource section provides colored info icons next to each property indicating whether the property/attribute is required, conditional or optional.</li>\n <li>Form validation for each section to ensure that 'required' fields are filled in.</li>\n <li>An 'intrinsic function' widget to generate functions.</li>\n <li>Autopopulating certain function fields with valid values e.g. Fn::GetAtt and Ref get auto-populated with respective parameters, resources or resources' attributes.</li>\n <li>A 'Property Dealer' widget next to each custom property of a resource i.e. properties that do not hold primitive values. </li>\n <li>Import functionality to import existing templates for further modification. </li>\n <li>A copy button next to each section, to be mainly used while modifying an imported template.</li>\n <li>'Download' option to download the template to local comupter.</li>\n <li>Upload option to upload the template securely to an AWS s3 bucket.</li>\n <li>Validate the template securely by providing AWS credentials of your AWS account. </li>\n <li>A sleek, simple and easy-to-use UI interface</li>\n <li>Provides 'How-To' videos to further reduce the little learning curve required. </li>\n <li>Runs fully within the browser memory with no backend. </li>\n </mat-list>\n</h4>\n\n<h4 mat-line>\n CloudKast is still in <u>development preview</u> and periodically updated with more AWS resources. If you come across any issues/bugs or want to request\n an enhancement, we would love to hear from you. Send it to email ID provided in the upper right corner. \n</h4>\n\n<h4 mat-line>\n The following features are <b>in progress</b>:\n <mat-list role=\"list\" >\n <li>Serveless Application Model templates</li>\n <li>Yaml support (currently under testing) </li>\n <li>Remaining AWS Resources</li>\n <li>Metadata section</li>\n <li>Transform section. Currently supported at template level and snippet level. Snippet level support is limited to resource properties only. </li>\n <li>comprehensive tutorial videos</li>\n </mat-list>\n</h4>\n\n\n"
/***/ }),
/***/ "./src/app/about-page/about-page.component.ts":
/*!****************************************************!*\
!*** ./src/app/about-page/about-page.component.ts ***!
\****************************************************/
/*! exports provided: AboutPageComponent */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AboutPageComponent", function() { return AboutPageComponent; });
/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js");
/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @angular/core */ "./node_modules/@angular/core/fesm5/core.js");
var AboutPageComponent = /** @class */ (function () {
function AboutPageComponent() {
}
AboutPageComponent.prototype.ngOnInit = function () {
};
AboutPageComponent = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([
Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Component"])({
selector: 'app-about-page',
template: __webpack_require__(/*! ./about-page.component.html */ "./src/app/about-page/about-page.component.html"),
styles: [__webpack_require__(/*! ./about-page.component.css */ "./src/app/about-page/about-page.component.css")]
}),
tslib__WEBPACK_IMPORTED_MODULE_0__["__metadata"]("design:paramtypes", [])
], AboutPageComponent);
return AboutPageComponent;
}());
/***/ }),
/***/ "./src/app/app-routing.module.ts":
/*!***************************************!*\
!*** ./src/app/app-routing.module.ts ***!
\***************************************/
/*! exports provided: AppRoutingModule */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AppRoutingModule", function() { return AppRoutingModule; });
/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js");
/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @angular/core */ "./node_modules/@angular/core/fesm5/core.js");
/* harmony import */ var _angular_router__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @angular/router */ "./node_modules/@angular/router/fesm5/router.js");
var routes = [];
var AppRoutingModule = /** @class */ (function () {
function AppRoutingModule() {
}
AppRoutingModule = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([
Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["NgModule"])({
imports: [_angular_router__WEBPACK_IMPORTED_MODULE_2__["RouterModule"].forRoot(routes)],
exports: [_angular_router__WEBPACK_IMPORTED_MODULE_2__["RouterModule"]]
})
], AppRoutingModule);
return AppRoutingModule;
}());
/***/ }),
/***/ "./src/app/app.component.css":
/*!***********************************!*\
!*** ./src/app/app.component.css ***!
\***********************************/
/*! no static exports found */
/***/ (function(module, exports) {
module.exports = ".example-icon {\r\n padding: 0 14px;\r\n }\r\n \r\n .example-spacer {\r\n flex: 1 1 auto;\r\n }\r\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvYXBwLmNvbXBvbmVudC5jc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7SUFDSSxlQUFlO0VBQ2pCOztFQUVBO0lBQ0UsY0FBYztFQUNoQiIsImZpbGUiOiJzcmMvYXBwL2FwcC5jb21wb25lbnQuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLmV4YW1wbGUtaWNvbiB7XHJcbiAgICBwYWRkaW5nOiAwIDE0cHg7XHJcbiAgfVxyXG4gIFxyXG4gIC5leGFtcGxlLXNwYWNlciB7XHJcbiAgICBmbGV4OiAxIDEgYXV0bztcclxuICB9Il19 */"
/***/ }),
/***/ "./src/app/app.component.html":
/*!************************************!*\
!*** ./src/app/app.component.html ***!
\************************************/
/*! no static exports found */
/***/ (function(module, exports) {
module.exports = "<mat-toolbar color=\"primary\" >\n <mat-toolbar-row>\n <span>CloudKast</span>\n <span class=\"example-spacer\"></span>\n <a style=\"color:white\" href=\"mailto:cloudkasting@gmail.com\"> <mat-icon>email</mat-icon> </a> \n </mat-toolbar-row>\n</mat-toolbar>\n<mat-tab-group color=\"primary\" animationDuration=\"0ms\">\n <mat-tab label=\"Create\"> \n <mat-tab-group color=\"accent\" animationDuration=\"0ms\" >\n <mat-tab label=\"Version & Desc\"> \n <app-metadata></app-metadata>\n </mat-tab>\n <mat-tab label=\"Parameters\">\n <app-parameters-tab></app-parameters-tab>\n </mat-tab>\n <mat-tab label=\"Mappings\"> \n <app-mappings-tab></app-mappings-tab>\n </mat-tab>\n <mat-tab label=\"Conditions\"> \n <app-conditions-tab></app-conditions-tab>\n </mat-tab>\n <mat-tab label=\"Transform & Metadata\"> \n <mat-tab-group color=\"primary\" animationDuration=\"0ms\" > \n <mat-tab label=\"Transform\">\n <app-transform></app-transform>\n </mat-tab>\n <mat-tab label=\"Metadata\">\n <app-ec2-init></app-ec2-init>\n </mat-tab>\n </mat-tab-group>\n </mat-tab>\n <mat-tab label=\"Resources\"> \n <app-resource-view></app-resource-view>\n </mat-tab>\n <mat-tab label=\"Outputs\"> \n <app-outputs-tab></app-outputs-tab>\n </mat-tab>\n <!-- <mat-tab label=\"AWS::Cloudformation::Init\" >\n <app-ec2-init></app-ec2-init>\n </mat-tab> -->\n </mat-tab-group>\n </mat-tab>\n <!-- <mat-tab label=\"Property Dealer\">\n <app-object-help></app-object-help>\n </mat-tab> -->\n <mat-tab label=\"Result\"> \n <app-result></app-result>\n </mat-tab>\n <mat-tab label=\"Import\">\n <app-import-template></app-import-template>\n </mat-tab>\n <mat-tab label=\"About\">\n <app-about-page></app-about-page>\n </mat-tab>\n <mat-tab label=\"How to\">\n <app-how-to></app-how-to>\n </mat-tab>\n</mat-tab-group>"
/***/ }),
/***/ "./src/app/app.component.ts":
/*!**********************************!*\
!*** ./src/app/app.component.ts ***!
\**********************************/
/*! exports provided: AppComponent */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AppComponent", function() { return AppComponent; });
/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js");
/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @angular/core */ "./node_modules/@angular/core/fesm5/core.js");
var AppComponent = /** @class */ (function () {
function AppComponent() {
this.title = 'CloudKast';
}
AppComponent = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([
Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Component"])({
selector: 'app-root',
template: __webpack_require__(/*! ./app.component.html */ "./src/app/app.component.html"),
styles: [__webpack_require__(/*! ./app.component.css */ "./src/app/app.component.css")]
})
], AppComponent);
return AppComponent;
}());
/***/ }),
/***/ "./src/app/app.module.ts":
/*!*******************************!*\
!*** ./src/app/app.module.ts ***!
\*******************************/
/*! exports provided: AppModule */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AppModule", function() { return AppModule; });
/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js");
/* harmony import */ var _angular_platform_browser__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @angular/platform-browser */ "./node_modules/@angular/platform-browser/fesm5/platform-browser.js");
/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @angular/core */ "./node_modules/@angular/core/fesm5/core.js");
/* harmony import */ var _app_routing_module__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./app-routing.module */ "./src/app/app-routing.module.ts");
/* harmony import */ var _app_component__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./app.component */ "./src/app/app.component.ts");
/* harmony import */ var _angular_forms__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @angular/forms */ "./node_modules/@angular/forms/fesm5/forms.js");
/* harmony import */ var hammerjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! hammerjs */ "./node_modules/hammerjs/hammer.js");
/* harmony import */ var hammerjs__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(hammerjs__WEBPACK_IMPORTED_MODULE_6__);
/* harmony import */ var _angular_platform_browser_animations__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @angular/platform-browser/animations */ "./node_modules/@angular/platform-browser/fesm5/animations.js");
/* harmony import */ var _angular_material__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @angular/material */ "./node_modules/@angular/material/esm5/material.es5.js");
/* harmony import */ var _angular_material_input__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @angular/material/input */ "./node_modules/@angular/material/esm5/input.es5.js");
/* harmony import */ var _angular_material_autocomplete__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @angular/material/autocomplete */ "./node_modules/@angular/material/esm5/autocomplete.es5.js");
/* harmony import */ var _angular_material_datepicker__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @angular/material/datepicker */ "./node_modules/@angular/material/esm5/datepicker.es5.js");
/* harmony import */ var _angular_material_form_field__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @angular/material/form-field */ "./node_modules/@angular/material/esm5/form-field.es5.js");
/* harmony import */ var _angular_material_radio__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @angular/material/radio */ "./node_modules/@angular/material/esm5/radio.es5.js");
/* harmony import */ var _angular_material_select__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @angular/material/select */ "./node_modules/@angular/material/esm5/select.es5.js");
/* harmony import */ var _angular_material_slider__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! @angular/material/slider */ "./node_modules/@angular/material/esm5/slider.es5.js");
/* harmony import */ var _angular_material_slide_toggle__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! @angular/material/slide-toggle */ "./node_modules/@angular/material/esm5/slide-toggle.es5.js");
/* harmony import */ var _angular_material_menu__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! @angular/material/menu */ "./node_modules/@angular/material/esm5/menu.es5.js");
/* harmony import */ var _angular_material_sidenav__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! @angular/material/sidenav */ "./node_modules/@angular/material/esm5/sidenav.es5.js");
/* harmony import */ var _angular_material_toolbar__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! @angular/material/toolbar */ "./node_modules/@angular/material/esm5/toolbar.es5.js");
/* harmony import */ var _angular_material_list__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! @angular/material/list */ "./node_modules/@angular/material/esm5/list.es5.js");
/* harmony import */ var _angular_material_grid_list__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! @angular/material/grid-list */ "./node_modules/@angular/material/esm5/grid-list.es5.js");
/* harmony import */ var _angular_material_card__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! @angular/material/card */ "./node_modules/@angular/material/esm5/card.es5.js");
/* harmony import */ var _angular_material_stepper__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! @angular/material/stepper */ "./node_modules/@angular/material/esm5/stepper.es5.js");
/* harmony import */ var _angular_material_tabs__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! @angular/material/tabs */ "./node_modules/@angular/material/esm5/tabs.es5.js");
/* harmony import */ var _angular_material_expansion__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! @angular/material/expansion */ "./node_modules/@angular/material/esm5/expansion.es5.js");
/* harmony import */ var _angular_material_button_toggle__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! @angular/material/button-toggle */ "./node_modules/@angular/material/esm5/button-toggle.es5.js");
/* harmony import */ var _angular_material_chips__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! @angular/material/chips */ "./node_modules/@angular/material/esm5/chips.es5.js");
/* harmony import */ var _angular_material_icon__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! @angular/material/icon */ "./node_modules/@angular/material/esm5/icon.es5.js");
/* harmony import */ var _angular_material_progress_spinner__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! @angular/material/progress-spinner */ "./node_modules/@angular/material/esm5/progress-spinner.es5.js");
/* harmony import */ var _angular_material_progress_bar__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! @angular/material/progress-bar */ "./node_modules/@angular/material/esm5/progress-bar.es5.js");
/* harmony import */ var _angular_material_dialog__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! @angular/material/dialog */ "./node_modules/@angular/material/esm5/dialog.es5.js");
/* harmony import */ var _angular_material_tooltip__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! @angular/material/tooltip */ "./node_modules/@angular/material/esm5/tooltip.es5.js");
/* harmony import */ var _angular_material_snack_bar__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! @angular/material/snack-bar */ "./node_modules/@angular/material/esm5/snack-bar.es5.js");
/* harmony import */ var _angular_material_table__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(/*! @angular/material/table */ "./node_modules/@angular/material/esm5/table.es5.js");
/* harmony import */ var _angular_material_sort__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(/*! @angular/material/sort */ "./node_modules/@angular/material/esm5/sort.es5.js");
/* harmony import */ var _angular_material_paginator__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(/*! @angular/material/paginator */ "./node_modules/@angular/material/esm5/paginator.es5.js");
/* harmony import */ var _angular_material_badge__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(/*! @angular/material/badge */ "./node_modules/@angular/material/esm5/badge.es5.js");
/* harmony import */ var _resource_view_resource_view_component__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(/*! ./resource-view/resource-view.component */ "./src/app/resource-view/resource-view.component.ts");
/* harmony import */ var _result_result_component__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__(/*! ./result/result.component */ "./src/app/result/result.component.ts");
/* harmony import */ var _metadata_metadata_component__WEBPACK_IMPORTED_MODULE_40__ = __webpack_require__(/*! ./metadata/metadata.component */ "./src/app/metadata/metadata.component.ts");
/* harmony import */ var _json_result_service__WEBPACK_IMPORTED_MODULE_41__ = __webpack_require__(/*! ./json-result.service */ "./src/app/json-result.service.ts");
/* harmony import */ var _parameters_parameters_component__WEBPACK_IMPORTED_MODULE_42__ = __webpack_require__(/*! ./parameters/parameters.component */ "./src/app/parameters/parameters.component.ts");
/* harmony import */ var _parameters_tab_parameters_tab_component__WEBPACK_IMPORTED_MODULE_43__ = __webpack_require__(/*! ./parameters-tab/parameters-tab.component */ "./src/app/parameters-tab/parameters-tab.component.ts");
/* harmony import */ var _useful_utils_service__WEBPACK_IMPORTED_MODULE_44__ = __webpack_require__(/*! ./useful-utils.service */ "./src/app/useful-utils.service.ts");
/* harmony import */ var _intrinsic_functions_intrinsic_functions_component__WEBPACK_IMPORTED_MODULE_45__ = __webpack_require__(/*! ./intrinsic-functions/intrinsic-functions.component */ "./src/app/intrinsic-functions/intrinsic-functions.component.ts");
/* harmony import */ var _keys_pipe_pipe__WEBPACK_IMPORTED_MODULE_46__ = __webpack_require__(/*! ./keys-pipe.pipe */ "./src/app/keys-pipe.pipe.ts");
/* harmony import */ var _object_help_object_help_component__WEBPACK_IMPORTED_MODULE_47__ = __webpack_require__(/*! ./object-help/object-help.component */ "./src/app/object-help/object-help.component.ts");
/* harmony import */ var _resource_data_service__WEBPACK_IMPORTED_MODULE_48__ = __webpack_require__(/*! ./resource-data.service */ "./src/app/resource-data.service.ts");
/* harmony import */ var _mappings_mappings_component__WEBPACK_IMPORTED_MODULE_49__ = __webpack_require__(/*! ./mappings/mappings.component */ "./src/app/mappings/mappings.component.ts");
/* harmony import */ var _conditions_conditions_component__WEBPACK_IMPORTED_MODULE_50__ = __webpack_require__(/*! ./conditions/conditions.component */ "./src/app/conditions/conditions.component.ts");
/* harmony import */ var _outputs_outputs_component__WEBPACK_IMPORTED_MODULE_51__ = __webpack_require__(/*! ./outputs/outputs.component */ "./src/app/outputs/outputs.component.ts");
/* harmony import */ var _transform_transform_component__WEBPACK_IMPORTED_MODULE_52__ = __webpack_require__(/*! ./transform/transform.component */ "./src/app/transform/transform.component.ts");
/* harmony import */ var _about_page_about_page_component__WEBPACK_IMPORTED_MODULE_53__ = __webpack_require__(/*! ./about-page/about-page.component */ "./src/app/about-page/about-page.component.ts");
/* harmony import */ var _outputs_tab_outputs_tab_component__WEBPACK_IMPORTED_MODULE_54__ = __webpack_require__(/*! ./outputs-tab/outputs-tab.component */ "./src/app/outputs-tab/outputs-tab.component.ts");
/* harmony import */ var _conditions_tab_conditions_tab_component__WEBPACK_IMPORTED_MODULE_55__ = __webpack_require__(/*! ./conditions-tab/conditions-tab.component */ "./src/app/conditions-tab/conditions-tab.component.ts");
/* harmony import */ var _mappings_tab_mappings_tab_component__WEBPACK_IMPORTED_MODULE_56__ = __webpack_require__(/*! ./mappings-tab/mappings-tab.component */ "./src/app/mappings-tab/mappings-tab.component.ts");
/* harmony import */ var _common_resource_common_resource_component__WEBPACK_IMPORTED_MODULE_57__ = __webpack_require__(/*! ./common-resource/common-resource.component */ "./src/app/common-resource/common-resource.component.ts");
/* harmony import */ var _property_dialog_tab_property_dialog_tab_component__WEBPACK_IMPORTED_MODULE_58__ = __webpack_require__(/*! ./property-dialog-tab/property-dialog-tab.component */ "./src/app/property-dialog-tab/property-dialog-tab.component.ts");
/* harmony import */ var _property_dialog_property_dialog_component__WEBPACK_IMPORTED_MODULE_59__ = __webpack_require__(/*! ./property-dialog/property-dialog.component */ "./src/app/property-dialog/property-dialog.component.ts");
/* harmony import */ var _functions_tab_functions_tab_component__WEBPACK_IMPORTED_MODULE_60__ = __webpack_require__(/*! ./functions-tab/functions-tab.component */ "./src/app/functions-tab/functions-tab.component.ts");
/* harmony import */ var _ec2_init_ec2_init_component__WEBPACK_IMPORTED_MODULE_61__ = __webpack_require__(/*! ./ec2-init/ec2-init.component */ "./src/app/ec2-init/ec2-init.component.ts");
/* harmony import */ var _ec2_init_config_tab_ec2_init_config_tab_component__WEBPACK_IMPORTED_MODULE_62__ = __webpack_require__(/*! ./ec2-init-config-tab/ec2-init-config-tab.component */ "./src/app/ec2-init-config-tab/ec2-init-config-tab.component.ts");
/* harmony import */ var _import_template_import_template_component__WEBPACK_IMPORTED_MODULE_63__ = __webpack_require__(/*! ./import-template/import-template.component */ "./src/app/import-template/import-template.component.ts");
/* harmony import */ var _how_to_how_to_component__WEBPACK_IMPORTED_MODULE_64__ = __webpack_require__(/*! ./how-to/how-to.component */ "./src/app/how-to/how-to.component.ts");
//Angular Material Components
//Material import end
var AppModule = /** @class */ (function () {
function AppModule() {
}
AppModule = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([
Object(_angular_core__WEBPACK_IMPORTED_MODULE_2__["NgModule"])({
declarations: [
_app_component__WEBPACK_IMPORTED_MODULE_4__["AppComponent"],
_resource_view_resource_view_component__WEBPACK_IMPORTED_MODULE_38__["ResourceViewComponent"],
_result_result_component__WEBPACK_IMPORTED_MODULE_39__["ResultComponent"],
_metadata_metadata_component__WEBPACK_IMPORTED_MODULE_40__["MetadataComponent"],
_parameters_parameters_component__WEBPACK_IMPORTED_MODULE_42__["ParametersComponent"],
_parameters_tab_parameters_tab_component__WEBPACK_IMPORTED_MODULE_43__["ParametersTabComponent"],
_intrinsic_functions_intrinsic_functions_component__WEBPACK_IMPORTED_MODULE_45__["IntrinsicFunctionsComponent"],
_keys_pipe_pipe__WEBPACK_IMPORTED_MODULE_46__["KeysPipePipe"],
_object_help_object_help_component__WEBPACK_IMPORTED_MODULE_47__["ObjectHelpComponent"],
_mappings_mappings_component__WEBPACK_IMPORTED_MODULE_49__["MappingsComponent"],
_conditions_conditions_component__WEBPACK_IMPORTED_MODULE_50__["ConditionsComponent"],
_outputs_outputs_component__WEBPACK_IMPORTED_MODULE_51__["OutputsComponent"],
_transform_transform_component__WEBPACK_IMPORTED_MODULE_52__["TransformComponent"],
_about_page_about_page_component__WEBPACK_IMPORTED_MODULE_53__["AboutPageComponent"],
_outputs_tab_outputs_tab_component__WEBPACK_IMPORTED_MODULE_54__["OutputsTabComponent"],
_conditions_tab_conditions_tab_component__WEBPACK_IMPORTED_MODULE_55__["ConditionsTabComponent"],
_mappings_tab_mappings_tab_component__WEBPACK_IMPORTED_MODULE_56__["MappingsTabComponent"],
_common_resource_common_resource_component__WEBPACK_IMPORTED_MODULE_57__["CommonResourceComponent"],
_property_dialog_tab_property_dialog_tab_component__WEBPACK_IMPORTED_MODULE_58__["PropertyDialogTabComponent"],
_property_dialog_property_dialog_component__WEBPACK_IMPORTED_MODULE_59__["PropertyDialogComponent"],
_functions_tab_functions_tab_component__WEBPACK_IMPORTED_MODULE_60__["FunctionsTabComponent"],
_ec2_init_ec2_init_component__WEBPACK_IMPORTED_MODULE_61__["EC2InitComponent"],
_ec2_init_config_tab_ec2_init_config_tab_component__WEBPACK_IMPORTED_MODULE_62__["Ec2InitConfigTabComponent"],
_import_template_import_template_component__WEBPACK_IMPORTED_MODULE_63__["ImportTemplateComponent"],
_how_to_how_to_component__WEBPACK_IMPORTED_MODULE_64__["HowToComponent"]
],
imports: [
_angular_platform_browser__WEBPACK_IMPORTED_MODULE_1__["BrowserModule"],
_app_routing_module__WEBPACK_IMPORTED_MODULE_3__["AppRoutingModule"],
_angular_platform_browser_animations__WEBPACK_IMPORTED_MODULE_7__["BrowserAnimationsModule"],
_angular_forms__WEBPACK_IMPORTED_MODULE_5__["FormsModule"],
//Material start
_angular_material__WEBPACK_IMPORTED_MODULE_8__["MatCheckboxModule"],
_angular_material__WEBPACK_IMPORTED_MODULE_8__["MatCheckboxModule"],
_angular_material__WEBPACK_IMPORTED_MODULE_8__["MatButtonModule"],
_angular_material_input__WEBPACK_IMPORTED_MODULE_9__["MatInputModule"],
_angular_material_autocomplete__WEBPACK_IMPORTED_MODULE_10__["MatAutocompleteModule"],
_angular_material_datepicker__WEBPACK_IMPORTED_MODULE_11__["MatDatepickerModule"],
_angular_material_form_field__WEBPACK_IMPORTED_MODULE_12__["MatFormFieldModule"],
_angular_material_radio__WEBPACK_IMPORTED_MODULE_13__["MatRadioModule"],
_angular_material_select__WEBPACK_IMPORTED_MODULE_14__["MatSelectModule"],
_angular_material_slider__WEBPACK_IMPORTED_MODULE_15__["MatSliderModule"],
_angular_material_slide_toggle__WEBPACK_IMPORTED_MODULE_16__["MatSlideToggleModule"],
_angular_material_menu__WEBPACK_IMPORTED_MODULE_17__["MatMenuModule"],
_angular_material_sidenav__WEBPACK_IMPORTED_MODULE_18__["MatSidenavModule"],
_angular_material_toolbar__WEBPACK_IMPORTED_MODULE_19__["MatToolbarModule"],
_angular_material_list__WEBPACK_IMPORTED_MODULE_20__["MatListModule"],
_angular_material_grid_list__WEBPACK_IMPORTED_MODULE_21__["MatGridListModule"],
_angular_material_card__WEBPACK_IMPORTED_MODULE_22__["MatCardModule"],
_angular_material_stepper__WEBPACK_IMPORTED_MODULE_23__["MatStepperModule"],
_angular_material_tabs__WEBPACK_IMPORTED_MODULE_24__["MatTabsModule"],
_angular_material_expansion__WEBPACK_IMPORTED_MODULE_25__["MatExpansionModule"],
_angular_material_button_toggle__WEBPACK_IMPORTED_MODULE_26__["MatButtonToggleModule"],
_angular_material_chips__WEBPACK_IMPORTED_MODULE_27__["MatChipsModule"],
_angular_material_icon__WEBPACK_IMPORTED_MODULE_28__["MatIconModule"],
_angular_material_progress_spinner__WEBPACK_IMPORTED_MODULE_29__["MatProgressSpinnerModule"],
_angular_material_progress_bar__WEBPACK_IMPORTED_MODULE_30__["MatProgressBarModule"],
_angular_material_dialog__WEBPACK_IMPORTED_MODULE_31__["MatDialogModule"],
_angular_material_tooltip__WEBPACK_IMPORTED_MODULE_32__["MatTooltipModule"],
_angular_material_snack_bar__WEBPACK_IMPORTED_MODULE_33__["MatSnackBarModule"],
_angular_material_table__WEBPACK_IMPORTED_MODULE_34__["MatTableModule"],
_angular_material_sort__WEBPACK_IMPORTED_MODULE_35__["MatSortModule"],
_angular_material_paginator__WEBPACK_IMPORTED_MODULE_36__["MatPaginatorModule"],
_angular_material_badge__WEBPACK_IMPORTED_MODULE_37__["MatBadgeModule"]
//Material End
],
providers: [_json_result_service__WEBPACK_IMPORTED_MODULE_41__["JsonResultService"], _useful_utils_service__WEBPACK_IMPORTED_MODULE_44__["UsefulUtilsService"], _resource_data_service__WEBPACK_IMPORTED_MODULE_48__["ResourceDataService"],
{ provide: _angular_material_dialog__WEBPACK_IMPORTED_MODULE_31__["MAT_DIALOG_DATA"], useValue: "AWS::EC2::Instance" }
],
bootstrap: [_app_component__WEBPACK_IMPORTED_MODULE_4__["AppComponent"]],
entryComponents: [_property_dialog_tab_property_dialog_tab_component__WEBPACK_IMPORTED_MODULE_58__["PropertyDialogTabComponent"]]
})
], AppModule);
return AppModule;
}());
/***/ }),
/***/ "./src/app/aws-resources.service.ts":
/*!******************************************!*\
!*** ./src/app/aws-resources.service.ts ***!
\******************************************/
/*! exports provided: AwsResourcesService */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AwsResourcesService", function() { return AwsResourcesService; });
/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js");
/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @angular/core */ "./node_modules/@angular/core/fesm5/core.js");
var AwsResourcesService = /** @class */ (function () {
function AwsResourcesService() {
this.ec2_volume = {
"Type": "AWS::EC2::Volume",
"Properties": {
"AutoEnableIO": "Boolean. Indicates whether the volume is auto-enabled for I/O operations. By default, Amazon EBS disables I/O to the volume from attached EC2 instances when it determines that a volume's data is potentially inconsistent. If the consistency of the volume is not a concern, and you prefer that the volume be made available immediately if it's impaired, you can configure the volume to automatically enable I/O.",
"AvailabilityZone": "*String,Required: Yes",
"Encrypted": "**Boolean,Required: Conditional. If you specify the KmsKeyId property, you must enable encryption. Indicates whether the volume is encrypted. You can attach encrypted Amazon EBS volumes only to instance types that support Amazon EBS encryption. Volumes that are created from encrypted snapshots are automatically encrypted. You can't create an encrypted volume from an unencrypted snapshot, or vice versa. If your AMI uses encrypted volumes, you can launch the AMI only on supported instance types.",
"Iops": "**Number,Required: Conditional. Required when the volume type is io1; not used with other volume types. The number of I/O operations per second (IOPS) that the volume supports. For Provisioned IOPS SSD volumes, this represents the number of IOPS that are provisioned for the volume. For General Purpose SSD volumes, this represents the baseline performance of the volume and the rate at which the volume accumulates I/O credits for bursting. ",
"KmsKeyId": "String,The Amazon Resource Name (ARN) of the AWS Key Management Service master key",
"Size": "**Integer,Required: Conditional. If you don't specify a value for the SnapshotId property, you must specify this property. If you specify the SnapshotId property, specify a size that is equal to or greater than the size of the snapshot. If you don't specify a size, EC2 uses the size of the snapshot as the volume size.",
"SnapshotId": "String",
"VolumeType": "String,Valid Values: standard | io1 | gp2 | sc1 | st1,Required: No"
}
};
this.ec2_eip = {
"Type": "AWS::EC2::EIP",
"Properties": {
"Domain": "**Set to vpc to allocate the address to your Virtual Private Cloud (VPC). No other values are supported. Required when allocating an address to a VPC. Allowed Values: standard | vpc",
"InstanceId": "The Instance ID of the Amazon EC2 instance that you want to associate with this Elastic IP address.",
"PublicIpv4Pool": "Specifies the ID of an address pool that you own to let Amazon EC2 select an address from the address pool."
}
};
this.ec2_instance = {
"Type": "AWS::EC2::Instance",
"Properties": {
//"Metadata":{"info":"This is not a property but rather an attribute. Use the AWS::CloudFormation::Init type to include metadata on an Amazon EC2 instance for the cfn-init helper script. If your template calls the cfn-init script, the script looks for resource metadata rooted in the AWS::CloudFormation::Init metadata key."},
"Affinity": "String. Indicates whether Amazon Elastic Compute Cloud (Amazon EC2) always associates the instance with a dedicated host. If you want the instance to always restart on the same host on which it was launched, specify 'host'. If you want the instance to restart on any available host, but try to launch onto the last host it ran on (on a best-effort basis), specify 'default'.",
"AvailabilityZone": "String. If not specified, an Availability Zone will be automatically chosen for you based on the load balancing criteria for the region.",
"BlockDeviceMappings": ["A list of Amazon EC2 BlockDeviceMapping.##"],
"CreditSpecification": { "info": " Type: CreditSpecification. Amazon EC2 Instance CreditSpecification.##" },
"DisableApiTermination": "Boolean. Specifies whether the instance can be terminated through the API.",
"EbsOptimized": "Boolean. Indicates whether the instance is optimized for Amazon EBS I/O. This optimization provides dedicated throughput to Amazon EBS and an optimized configuration stack to provide optimal Amazon EBS I/O performance. This optimization isn't available with all instance types. Additional usage charges apply when using an EBS-optimized instance.",
"ElasticGpuSpecifications": ["Type: List of ElasticGpuSpecification. Specifies the Elastic GPUs. An Elastic GPU is a GPU resource that you can attach to your instance to accelerate the graphics performance of your applications.##"],
"ElasticInferenceAccelerators": ["Type: List of ElasticInferenceAccelerator. Specify a list of elastic inference accelerators for an instance. ##"],
"HostId": "String. The ID of a dedicated host that the instance is associated with",
"IamInstanceProfile": "String. The IAM instance profile",
"ImageId": "String. The ID of the AMI. An AMI ID is required to launch an instance and must be specified here or in a launch template.",
"InstanceInitiatedShutdownBehavior": "String. Indicates whether an instance stops or terminates when you shut down the instance from the instance's operating system shutdown command. Allowed Values: stop | terminate",
"InstanceType": "String. Default: m1.small. Allowed Values: a1.2xlarge | a1.4xlarge | a1.large | a1.medium | a1.xlarge | c1.medium | c1.xlarge | c3.2xlarge | c3.4xlarge | c3.8xlarge | c3.large | c3.xlarge | c4.2xlarge | c4.4xlarge | c4.8xlarge | c4.large | c4.xlarge | c5.18xlarge | c5.2xlarge | c5.4xlarge | c5.9xlarge | c5.large | c5.xlarge | c5d.18xlarge | c5d.2xlarge | c5d.4xlarge | c5d.9xlarge | c5d.large | c5d.xlarge | c5n.18xlarge | c5n.2xlarge | c5n.4xlarge | c5n.9xlarge | c5n.large | c5n.xlarge | cc1.4xlarge | cc2.8xlarge | cg1.4xlarge | cr1.8xlarge | d2.2xlarge | d2.4xlarge | d2.8xlarge | d2.xlarge | f1.16xlarge | f1.2xlarge | f1.4xlarge | g2.2xlarge | g2.8xlarge | g3.16xlarge | g3.4xlarge | g3.8xlarge | g3s.xlarge | h1.16xlarge | h1.2xlarge | h1.4xlarge | h1.8xlarge | hi1.4xlarge | hs1.8xlarge | i2.2xlarge | i2.4xlarge | i2.8xlarge | i2.xlarge | i3.16xlarge | i3.2xlarge | i3.4xlarge | i3.8xlarge | i3.large | i3.metal | i3.xlarge | m1.large | m1.medium | m1.small | m1.xlarge | m2.2xlarge | m2.4xlarge | m2.xlarge | m3.2xlarge | m3.large | m3.medium | m3.xlarge | m4.10xlarge | m4.16xlarge | m4.2xlarge | m4.4xlarge | m4.large | m4.xlarge | m5.12xlarge | m5.24xlarge | m5.2xlarge | m5.4xlarge | m5.large | m5.metal | m5.xlarge | m5a.12xlarge | m5a.24xlarge | m5a.2xlarge | m5a.4xlarge | m5a.large | m5a.xlarge | m5ad.12xlarge | m5ad.16xlarge | m5ad.24xlarge | m5ad.2xlarge | m5ad.4xlarge | m5ad.8xlarge | m5ad.large | m5ad.xlarge | m5d.12xlarge | m5d.24xlarge | m5d.2xlarge | m5d.4xlarge | m5d.large | m5d.metal | m5d.xlarge | p2.16xlarge | p2.8xlarge | p2.xlarge | p3.16xlarge | p3.2xlarge | p3.8xlarge | p3dn.24xlarge | r3.2xlarge | r3.4xlarge | r3.8xlarge | r3.large | r3.xlarge | r4.16xlarge | r4.2xlarge | r4.4xlarge | r4.8xlarge | r4.large | r4.xlarge | r5.12xlarge | r5.24xlarge | r5.2xlarge | r5.4xlarge | r5.large | r5.metal | r5.xlarge | r5a.12xlarge | r5a.24xlarge | r5a.2xlarge | r5a.4xlarge | r5a.large | r5a.xlarge | r5ad.12xlarge | r5ad.16xlarge | r5ad.24xlarge | r5ad.2xlarge | r5ad.4xlarge | r5ad.8xlarge | r5ad.large | r5ad.xlarge | r5d.12xlarge | r5d.24xlarge | r5d.2xlarge | r5d.4xlarge | r5d.large | r5d.metal | r5d.xlarge | t1.micro | t2.2xlarge | t2.large | t2.medium | t2.micro | t2.nano | t2.small | t2.xlarge | t3.2xlarge | t3.large | t3.medium | t3.micro | t3.nano | t3.small | t3.xlarge | t3a.2xlarge | t3a.large | t3a.medium | t3a.micro | t3a.nano | t3a.small | t3a.xlarge | u-12tb1.metal | u-6tb1.metal | u-9tb1.metal | x1.16xlarge | x1.32xlarge | x1e.16xlarge | x1e.2xlarge | x1e.32xlarge | x1e.4xlarge | x1e.8xlarge | x1e.xlarge | z1d.12xlarge | z1d.2xlarge | z1d.3xlarge | z1d.6xlarge | z1d.large | z1d.metal | z1d.xlarge",
"Ipv6AddressCount": "Integer. The number of IPv6 addresses to associate with the instance's primary network interface. Amazon EC2 chooses the IPv6 addresses from the range of your subnet. You cannot specify this option and the option to assign specific IPv6 addresses in the same request. You can specify this option if you've specified a minimum number of instances to launch. ",
"Ipv6Addresses": ["Type: List of InstanceIpv6Address##"],
"KernelId": "String. The ID of the kernel. We recommend that you use PV-GRUB instead of kernels and RAM disks.",
"KeyName": "String. If you do not specify a key pair, you can't connect to the instance unless you choose an AMI that is configured to allow users another way to log in.",
"LaunchTemplate": { "info": " Type: LaunchTemplateSpecification. The launch template to use to launch the instances. Any parameters that you specify in the AWS CloudFormation template override the same parameters in the launch template. You can specify either the name or ID of a launch template, but not both. ##" },
"LicenseSpecifications": ["Type: List of LicenseSpecification. ##"],
"Monitoring": "Boolean. Specifies whether detailed monitoring is enabled for the instance.",
"NetworkInterfaces": ["Type: List of NetworkInterface. The network interfaces to associate with the instance. If you use this property to point to a network interface, you must terminate the original interface before attaching a new one to allow the update of the instance to succeed. If this resource has a public IP address and is also in a VPC that is defined in the same template, you must use the DependsOn Attribute to declare a dependency on the VPC-gateway attachment. ##"],
"PlacementGroupName": "String. The name of an existing placement group that you want to launch the instance into (for cluster instances).",
"PrivateIpAddress": "**String. The private IP address for this instance. By default, Amazon VPC selects an IP address from the subnet for the instance. You cannot specify this option and the network interfaces option in the same request. Only one private IP address can be designated as primary. You can't specify this option if you've specified the option to designate a private IP address as the primary IP address in a network interface specification. You cannot specify this option if you're launching more than one instance in the request. If you make an update to an instance that requires replacement, you must assign a new private IP address. During a replacement, AWS CloudFormation creates a new instance but doesn't delete the old instance until the stack has successfully updated. If the stack update fails, AWS CloudFormation uses the old instance in order to roll back the stack to the previous working state. The old and new instances cannot have the same private IP address.",
"RamdiskId": "String. The ID of the RAM disk to select. Some kernels require additional drivers at launch. ",
"SecurityGroupIds": ["** List of String. A list that contains the security group IDs for VPC security groups to assign to the Amazon EC2 instance. If you specify a network interface, you must specify any security groups as part of the network interface. "],
"SecurityGroups": ["List of string. Valid only for Amazon EC2 security groups. A list that contains the Amazon EC2 security groups to assign to the Amazon EC2 instance."],
"SourceDestCheck": "Boolean. Controls whether source/destination checking is enabled on the instance. Also determines if an instance in a VPC will perform network address translation (NAT).For the instance to perform NAT, the value must be false",
"SsmAssociations": ["Type: List of SsmAssociation. The SSM document and parameter values in AWS Systems Manager to associate with this instance. To use this property, you must specify an IAM instance profile role for the instance. ##"],
"SubnetId": "** String. You cannot specify this option and the network interfaces option in the same request.",
"Tenancy": "String. Allowed Values: dedicated | default | host. The tenancy of the instance (if the instance is running in a VPC). An instance with a tenancy of dedicated runs on single-tenant hardware.",
"UserData": "String. The user data to make available to the instance. For more information, see Running Commands on Your Linux Instance at Launch (Linux) and Adding User Data (Windows). If you are using a command line tool, base64-encoding is performed for you, and you can load the text from a file. Otherwise, you must provide base64-encoded text. User data is limited to 16 KB.",
"Volumes": ["A list of EC2 MountPoints.##"],
"AdditionalInfo": "",
"CreationPolicy": { "info": "Use the CreationPolicy attribute when you want to wait on resource configuration actions before stack creation proceeds. For example, if you install and configure software applications on an EC2 instance, you might want those applications to be running before proceeding. In such cases, you can add a CreationPolicy attribute to the instance, and then send a success signal to the instance after the applications are installed and configured.##" }
}
};
this.ec2_securitygroup = {
"Type": "AWS::EC2::SecurityGroup",
"Properties": {
"GroupName": "If you don't specify a GroupName, AWS CloudFormation generates a unique physical ID and uses that ID for the group name.",
"GroupDescription": "*description",
"SecurityGroupEgress": ["A list of Amazon EC2 security group egress rules.##"],
"SecurityGroupIngress": ["A list of Amazon EC2 security group ingress rules.##"],
"VpcId": "*The physical ID of the VPC. You can obtain the physical ID by using a reference function"
}
};
this.ec2_customergateway = {
"Type": "AWS::EC2::CustomerGateway",
"Properties": {
"BgpAsn": "*The customer gateway's Border Gateway Protocol (BGP) Autonomous System Number (ASN).",
"IpAddress": "*The internet-routable IP address for the customer gateway's outside interface. The address must be static.",
"Type": "*The type of VPN connection that this customer gateway supports. e.g. ipsec.1"
}
};
this.ec2_dhcpoptions = {
"Type": "AWS::EC2::DHCPOptions",
"Properties": {
"DomainName": "** A domain name of your choice e.g. example.com",
"DomainNameServers": ["**The IP (IPv4) address of a domain name server. You can specify up to four addresses. At least one of the following properties must be specified:DomainNameServers, NetbiosNameServers, NtpServers. After this condition has been fulfilled, the rest of these properties are optional."],
"NetbiosNameServers": ["**The IP address (IPv4) of a NetBIOS name server. You can specify up to four addresses. At least one of the following properties must be specified:DomainNameServers, NetbiosNameServers, NtpServers. After this condition has been fulfilled, the rest of these properties are optional."],
"NetbiosNodeType": "**An integer value indicating the NetBIOS node type: 1: Broadcast. 2: Point-to-point. 4: Mixed mode. 8: Hybrid. Required if NetBiosNameServers is specified; optional otherwise. ",
"NtpServers": ["**The IP address (IPv4) of a Network Time Protocol (NTP) server. You can specify up to four addresses. List of String values. At least one of the following properties must be specified:DomainNameServers, NetbiosNameServers, NtpServers. After this condition has been fulfilled, the rest of these properties are optional."]
}
};
this.ec2_ec2fleet = {
"Type": "AWS::EC2::EC2Fleet",
"Properties": {
"ExcessCapacityTerminationPolicy": "Indicates whether running instances should be terminated if the total target capacity of the EC2 Fleet is decreased below the current size of the EC2 Fleet.",
"LaunchTemplateConfigs": ["*List of FleetLaunchTemplateConfigRequest property types##"],
"OnDemandOptions": { "info": "Type: OnDemandOptionsRequest. The allocation strategy of On-Demand Instances in an EC2 Fleet.## " },
"ReplaceUnhealthyInstances": "Boolean. Indicates whether EC2 Fleet should replace unhealthy instances.",
"SpotOptions": { "info": "Type: SpotOptionsRequest. Describes the configuration of Spot Instances in an EC2 Fleet.##" },
"TagSpecifications": ["List of TagSpecification property types.The key-value pair for tagging the EC2 Fleet request on creation. The value for ResourceType must be fleet, otherwise the fleet request fails.##"],
"TargetCapacitySpecification": { "info": "*TargetCapacitySpecificationRequest Type. The TotalTargetCapacity, OnDemandTargetCapacity, SpotTargetCapacity, and DefaultCapacityType structure.##" },
"TerminateInstancesWithExpiration": "Boolean. Indicates whether running instances should be terminated when the EC2 Fleet expires.",
"Type": "The type of the request. By default, the EC2 Fleet places an asynchronous request for your desired capacity, and maintains it by replenishing interrupted Spot Instances (maintain). A value of instant places a synchronous one-time request, and returns errors for any instances that could not be launched. A value of request places an asynchronous one-time request without maintaining capacity or submitting requests in alternative capacity pools if capacity is unavailable.",
"ValidFrom": "The start date and time of the request, in UTC format (for example, YYYY-MM-DDTHH:MM:SSZ). The default is to start fulfilling the request immediately.",
"ValidUntil": "The end date and time of the request, in UTC format (for example, YYYY-MM-DDTHH:MM:SSZ). At this point, no new EC2 Fleet requests are placed or able to fulfill the request. The default end date is 7 days from the current date."
}
};
this.ec2_egressonlyinternetgateway = {
"Type": "AWS::EC2::EgressOnlyInternetGateway",
"Properties": {
"VpcId": "* the id of the vpc."
}
};
this.ec2_eipassociation = {
"Type": "AWS::EC2::EIPAssociation",
"Properties": {
"AllocationId": "**[EC2-VPC] Allocation ID for the VPC Elastic IP address you want to associate with an Amazon EC2 instance in your VPC.Conditional. Required for EC2-VPC.",
"EIP": "**Elastic IP address that you want to associate with the Amazon EC2 instance specified by the InstanceId property. Required for EC2-Classic.",
"InstanceId": "**Instance ID of the Amazon EC2 instance that you want to associate with the Elastic IP address specified by the EIP property. If the instance has more than one network interface, you must specify a network interface ID. Conditional. If you specify the EIP property, you must specify this property. If you specify the AllocationId property, you must specify this property or the NetworkInterfaceId property.",
"NetworkInterfaceId": "**The ID of the network interface to associate with the Elastic IP address. If the instance has more than one network interface, you must specify a network interface ID.If you specify the AllocationId property, you must specify this property or the InstanceId property.",
"PrivateIpAddress": "The private IP address that you want to associate with the Elastic IP address. The private IP address is restricted to the primary and secondary private IP addresses that are associated with the network interface."
}
};
this.ec2_flowlog = {
"Type": "AWS::EC2::FlowLog",
"Properties": {
"DeliverLogsPermissionArn": "The Amazon Resource Name (ARN) of an AWS Identity and Access Management (IAM) role that permits Amazon EC2 to publish flow logs to a CloudWatch Logs log group in your account. If you specify LogDestinationType as s3, do not specify DeliverLogsPermissionArn or LogGroupName.",
"LogDestination": "If you specify LogDestinationType as s3, do not specify DeliverLogsPermissionArn or LogGroupName.",
"LogDestinationType": "Specifies the type of destination to which the flow log data is to be published. Flow log data can be published to CloudWatch Logs or Amazon S3. To publish flow log data to CloudWatch Logs, specify 'cloud-watch-logs'. To publish flow log data to Amazon S3, specify 's3'.",
"LogGroupName": "The name of a new or existing CloudWatch Logs log group where Amazon EC2 publishes your flow logs.",
"ResourceId": "*The ID of the subnet, network interface, or VPC for which you want to create a flow log.",
"ResourceType": "*The type of resource that you specified in the ResourceId property. For example, if you specified a VPC ID for the ResourceId property, specify VPC for this property.",
"TrafficType": "*The type of traffic to log. You can log traffic that the resource accepts or rejects, or all traffic. Valid Values: ACCEPT | REJECT | ALL"
}
};
this.ec2_host = {
"Type": "AWS::EC2::Host",
"Properties": {
"AutoPlacement": "Indicates if the host accepts EC2 instances with only matching configurations or if instances must also specify the host ID. Instances that don't specify a host ID can't launch onto a host with AutoPlacement set to off.",
"AvailabilityZone": "*The Availability Zone (AZ) in which to launch the dedicated host.",
"InstanceType": "*The instance type that the dedicated host accepts."
}
};
this.ec2_internetgateway = {
"Type": "AWS::EC2::InternetGateway",
"Properties": {}
};
this.ec2_launchtemplate = {
"Type": "AWS::EC2::LaunchTemplate",
"Properties": {
"LaunchTemplateName": "Minimum length of 3. Maximum length of 128.",
"LaunchTemplateData": { "info": "Type: LaunchTemplateData##" }
}
};
this.ec2_natgateway = {
"Type": "AWS::EC2::NatGateway",
"Properties": {
"AllocationId": "*The allocation ID of an Elastic IP address to associate with the NAT gateway. If the Elastic IP address is associated with another resource, you must first disassociate it.",
"SubnetId": "*The public subnet in which to create the NAT gateway."
}
};
this.ec2_networkacl = {
"Type": "AWS::EC2::NetworkAcl",
"Properties": {
"VpcId": "*The ID of the VPC where the network ACL will be created."
}
};
this.ec2_networkaclentry = {
"Type": "AWS::EC2::NetworkAclEntry",
"Properties": {
"CidrBlock": "**You must specify the CidrBlock or Ipv6CidrBlock property.",
"Egress": "Boolean. Whether this rule applies to egress traffic from the subnet (true) or ingress traffic to the subnet (false). By default, AWS CloudFormation specifies false.",
"Icmp": { "info": "**Type: EC2 NetworkAclEntry Icmp. required if specifying 1 (ICMP) for the protocol parameter.##" },
"Ipv6CidrBlock": "**You must specify the CidrBlock or Ipv6CidrBlock property.",
"NetworkAclId": "*ID of the ACL where the entry will be created.",
"PortRange": { "info": "**Type: EC2 NetworkAclEntry PortRange. Required if specifying 6 (TCP) or 17 (UDP) for the protocol parameter.## " },
"Protocol": "*The IP protocol that the rule applies to. You must specify -1 or a protocol number. If you specify -1, all ports are opened and the PortRange property is ignored.",
"RuleAction": "*Whether to allow or deny traffic that matches the rule; valid values are 'allow' or 'deny'.",
"RuleNumber": "*Rule number to assign to the entry, such as 100. ACL entries are processed in ascending order by rule number. Entries can't use the same rule number unless one is an egress rule and the other is an ingress rule."
}
};
this.ec2_networkinterface = {
"Type": "AWS::EC2::NetworkInterface",
"Properties": {
"Description": "String",
"GroupSet": ["Type: List of strings. A list of security group IDs associated with this network interface."],
"Ipv6AddressCount": "Integer. The number of IPv6 addresses to associate with the network interface. EC2 automatically selects the IPv6 addresses from the subnet range. To specify specific IPv6 addresses, use the Ipv6Addresses property and don't specify this property.",
"Ipv6Addresses": ["One or more specific IPv6 addresses from the IPv6 CIDR block range of your subnet to associate with the network interface. If you're specifying a number of IPv6 addresses, use the Ipv6AddressCount property and don't specify this property.##"],
"PrivateIpAddress": "Assigns a single private IP address to the network interface, which is used as the primary private IP address. If you want to specify multiple private IP address, use the PrivateIpAddresses property.",
"PrivateIpAddresses": ["Type: list of PrivateIpAddressSpecification. Assigns a list of private IP addresses to the network interface. You can specify a primary private IP address by setting the value of the Primary property to true in the PrivateIpAddressSpecification property. If you want EC2 to automatically assign private IP addresses, use the SecondaryPrivateIpAddressCount property and do not specify this property.##"],
"SecondaryPrivateIpAddressCount": "Integer. The number of secondary private IP addresses that EC2 automatically assigns to the network interface. EC2 uses the value of the PrivateIpAddress property as the primary private IP address. If you don't specify that property, EC2 automatically assigns both the primary and secondary private IP addresses.",
"SourceDestCheck": "Boolean. Flag indicating whether traffic to or from the instance is validated.",
"SubnetId": "String"
}
};
this.ec2_networkinterfaceattachment = {
"Type": "AWS::EC2::NetworkInterfaceAttachment",
"Properties": {
"DeleteOnTermination": "Whether to delete the network interface when the instance terminates. By default, this value is set to True.",
"DeviceIndex": "*The network interface's position in the attachment order. For example, the first attached network interface has a DeviceIndex of 0.",
"InstanceId": "*The ID of the instance to which you will attach the ENI.",
"NetworkInterfaceId": "*The ID of the ENI that you want to attach."
}
};
this.ec2_networkinterfacepermission = {
"Type": "AWS::EC2::NetworkInterfacePermission",
"Properties": {
"AwsAccountId": "*Aws account id",
"NetworkInterfaceId": "*The ID of the network interface.",
"Permission": "*The type of permission to grant: INSTANCE-ATTACH or EIP-ASSOCIATE."
}
};
this.ec2_placementgroup = {
"Type": "AWS::EC2::PlacementGroup",
"Properties": {
"Strategy": "The placement strategy, which relates to the instance types that can be added to the placement group. For example, for the cluster strategy, you can cluster C4 instance types but not T2 instance types. Valid Values: cluster | spread | partition"
}
};
this.ec2_route = {
"Type": "AWS::EC2::Route",
"Properties": {
"DestinationCidrBlock": "**The IPv4 CIDR address block used for the destination match. For example, 0.0.0.0/0. Routing decisions are based on the most specific match. You must specify the DestinationCidrBlock or DestinationIpv6CidrBlock property.",
"DestinationIpv6CidrBlock": "**The IPv6 CIDR address block used for the destination match. For example, ::/0. Routing decisions are based on the most specific match. You must specify the DestinationCidrBlock or DestinationIpv6CidrBlock property.",
"EgressOnlyInternetGatewayId": "**The ID of an egress-only internet gateway that is attached to your VPC (over IPv6 only). Conditional. You must specify only one of the following properties: EgressOnlyInternetGatewayId, GatewayId, InstanceId, NatGatewayId, NetworkInterfaceId, or VpcPeeringConnectionId.",
"GatewayId": "**The ID of an internet gateway or virtual private gateway that is attached to your VPC. For example: igw-eaad4883. You must specify only one of the following properties: EgressOnlyInternetGatewayId, GatewayId, InstanceId, NatGatewayId, NetworkInterfaceId, or VpcPeeringConnectionId.",
"InstanceId": "**The ID of a NAT instance in your VPC. For example, i-1a2b3c4d. Conditional. You must specify only one of the following properties: EgressOnlyInternetGatewayId, GatewayId, InstanceId, NatGatewayId, NetworkInterfaceId, or VpcPeeringConnectionId.",
"NatGatewayId": "**The ID of a NAT gateway. For example, nat-0a12bc456789de0fg.You must specify only one of the following properties: EgressOnlyInternetGatewayId, GatewayId, InstanceId, NatGatewayId, NetworkInterfaceId, or VpcPeeringConnectionId.",
"NetworkInterfaceId": "**Allows the routing of network interface IDs.You must specify only one of the following properties: EgressOnlyInternetGatewayId, GatewayId, InstanceId, NatGatewayId, NetworkInterfaceId, or VpcPeeringConnectionId.",
"RouteTableId": "*The ID of the route table where the route will be added.",
"VpcPeeringConnectionId": "**The ID of a VPC peering connection. You must specify only one of the following properties: EgressOnlyInternetGatewayId, GatewayId, InstanceId, NatGatewayId, NetworkInterfaceId, or VpcPeeringConnectionId."
}
};
this.ec2_routetable = {
"Type": "AWS::EC2::RouteTable",
"Properties": {
"VpcId": "*The ID of the VPC where the route table will be created."
}
};
this.ec2_securitygroupegress = {
"Type": "AWS::EC2::SecurityGroupEgress",
"Properties": {
"CidrIp": "**You must specify a destination security group (DestinationPrefixListId or DestinationSecurityGroupId) or a CIDR range (CidrIp or CidrIpv6).",
"CidrIpv6": "**You must specify a destination security group (DestinationPrefixListId or DestinationSecurityGroupId) or a CIDR range (CidrIp or CidrIpv6).",
"Description": "description",
"DestinationPrefixListId": "**The AWS service prefix of an Amazon VPC endpoint.You must specify a destination security group (DestinationPrefixListId or DestinationSecurityGroupId) or a CIDR range (CidrIp or CidrIpv6).",
"DestinationSecurityGroupId": "**Specifies the group ID of the destination Amazon VPC security group. You must specify a destination security group (DestinationPrefixListId or DestinationSecurityGroupId) or a CIDR range (CidrIp or CidrIpv6).",
"FromPort": "*Start of port range for the TCP and UDP protocols, or an ICMP type number. If you specify icmp for the IpProtocol property, you can specify -1 as a wildcard (i.e., any ICMP type number).",
"GroupId": "*ID of the Amazon VPC security group to modify. This value can be a reference to an AWS::EC2::SecurityGroup resource that has a valid VpcId property or the ID of an existing Amazon VPC security group.",
"IpProtocol": "*IP protocol name or number.se -1 to specify all protocols. If you specify -1, or a protocol number other than tcp, udp, icmp, or 58 (ICMPv6), traffic on all ports is allowed, regardless of any ports you specify. ",
"ToPort": "*Integer. End of port range for the TCP and UDP protocols, or an ICMP code. If you specify icmp for the IpProtocol property, you can specify -1 as a wildcard (i.e., any ICMP code)."
}
};
this.ec2_securitygroupingress = {
"Type": "AWS::EC2::SecurityGroupIngress",
"Properties": {
"CidrIp": "**You must specify a source security group (SourceSecurityGroupName or SourceSecurityGroupId) or a CIDR range (CidrIp or CidrIpv6).",
"CidrIpv6": "**You must specify a source security group (SourceSecurityGroupName or SourceSecurityGroupId) or a CIDR range (CidrIp or CidrIpv6).",
"Description": "Description",
"FromPort": "*Integer. Start of port range for the TCP and UDP protocols, or an ICMP type number. If you specify icmp for the IpProtocol property, you can specify -1 as a wildcard (i.e., any ICMP type number).",
"GroupId": "**You must specify the GroupName property or the GroupId property. For security groups that are in a VPC, you must use the GroupId property. For example, EC2-VPC accounts must use the GroupId property.",
"GroupName": "**Name of the Amazon EC2 security group (non-VPC security group) to modify. This value can be a reference to an AWS::EC2::SecurityGroup resource or the name of an existing Amazon EC2 security group. You must specify the GroupName property or the GroupId property. For security groups that are in a VPC, you must use the GroupId property. For example, EC2-VPC accounts must use the GroupId property.",
"IpProtocol": "*IP protocol name or number.Use -1 to specify all protocols. If you specify -1, or a protocol number other than tcp, udp, icmp, or 58 (ICMPv6), traffic on all ports is allowed, regardless of any ports you specify. ",
"SourcePrefixListId": "**The AWS service prefix of an Amazon VPC endpoint. You must specify a source security group (SourcePrefixListId, SourceSecurityGroupId, or SourceSecurityGroupName) or a CIDR range (CidrIp or CidrIpv6).",
"SourceSecurityGroupName": "**Specifies the ID of the source security group or uses the Ref intrinsic function to refer to the logical ID of a security group defined in the same template. You must specify a source security group (SourcePrefixListId, SourceSecurityGroupId, or SourceSecurityGroupName) or a CIDR range (CidrIp or CidrIpv6).",
"SourceSecurityGroupId": "**Specifies the name of the Amazon EC2 security group (non-VPC security group) to allow access or use the Ref intrinsic function to refer to the logical ID of a security group defined in the same template. You must specify a source security group (SourcePrefixListId, SourceSecurityGroupId, or SourceSecurityGroupName) or a CIDR range (CidrIp or CidrIpv6).",
"SourceSecurityGroupOwnerId": "**Specifies the AWS Account ID of the owner of the Amazon EC2 security group specified in the SourceSecurityGroupName property. If you specify SourceSecurityGroupName or SourceSecurityGroupId and that security group is owned by a different account than the account creating the stack, you must specify the SourceSecurityGroupOwnerId; otherwise, this property is optional.",
"ToPort": "*Integer. End of port range for the TCP and UDP protocols, or an ICMP code. If you specify icmp for the IpProtocol property, you can specify -1 as a wildcard (i.e., any ICMP code).Required: Yes, for ICMP and any protocol that uses ports."
}
};
this.ec2_spotfleet = {
"Type": "AWS::EC2::SpotFleet",
"Properties": {
"SpotFleetRequestConfigData": { "info": "*Type of SpotFleetRequestConfigData##" }
}
};
this.ec2_subnet = {
"Type": "AWS::EC2::Subnet",
"Properties": {
"AssignIpv6AddressOnCreation": "**Indicates whether a network interface created in this subnet receives an IPv6 address. The default value is false. If you specify a true or false value for AssignIpv6AddressOnCreation, Ipv6CidrBlock must also be specified.",
"AvailabilityZone": "The availability zone in which you want the subnet. Default: AWS selects a zone for you (recommended).",
"CidrBlock": "*The CIDR block that you want the subnet to cover (for example, '10.0.0.0/24').",
"Ipv6CidrBlock": "**The IPv6 network range for the subnet, in CIDR notation. The subnet size must use a /64 prefix length. If you specify a true or false value for AssignIpv6AddressOnCreation, Ipv6CidrBlock must be specified.",
"MapPublicIpOnLaunch": "Indicates whether instances that are launched in this subnet receive a public IP address. By default, the value is false.",
"VpcId": "*A Ref structure that contains the ID of the VPC on which you want to create the subnet. The VPC ID is provided as the value of the 'Ref' property"
}
};
this.ec2_subnetcidrblock = {
"Type": "AWS::EC2::SubnetCidrBlock",
"Properties": {
"Ipv6CidrBlock": "*The IPv6 CIDR block for the subnet. The CIDR block must have a prefix length of /64.",
"SubnetId": "*The ID of the subnet to associate the IPv6 CIDR block with."
}
};
this.ec2_subnetnetworkaclassociation = {
"Type": "AWS::EC2::SubnetNetworkAclAssociation",
"Properties": {
"SubnetId": "*The ID representing the current association between the original network ACL and the subnet.",
"NetworkAclId": "*The ID of the new ACL to associate with the subnet."
}
};
this.ec2_subnetroutetableassociation = {
"Type": "AWS::EC2::SubnetRouteTableAssociation",
"Properties": {
"RouteTableId": "*The ID of the route table. This is commonly written as a reference to a route table declared elsewhere in the template.",
"SubnetId": "*The ID of the subnet."
}
};
this.ec2_transitgateway = {
"Type": "AWS::EC2::TransitGateway",
"Properties": {
"AmazonSideAsn": "Integer. A private Autonomous System Number (ASN) for the Amazon side of a BGP session. The range is 64512 to 65534 for 16-bit ASNs and 4200000000 to 4294967294 for 32-bit ASNs.",
"AutoAcceptSharedAttachments": "Indicates whether attachment requests are automatically accepted. The default is disable.",
"DefaultRouteTableAssociation": "Enable or disable automatic association with the default association route table. The default is enable.",
"DefaultRouteTablePropagation": "Enable or disable automatic propagation of routes to the default propagation route table. The default is enable.",
"Description": "Description",
"DnsSupport": "Enable or disable DNS support. The default is enable.",
"VpnEcmpSupport": "Enable or disable Equal Cost Multipath Protocol. The default is enable."
}
};
this.ec2_transitgatewayattachment = {
"Type": "AWS::EC2::TransitGatewayAttachment",
"Properties": {
"SubnetIds": ["*List of String values.The IDs of one or more subnets. You can specify only one subnet per Availability Zone. You must specify at least one subnet, but we recommend that you specify two subnets for better availability. The transit gateway uses one IP address from each specified subnet."],
"TransitGatewayId": "*The ID of the transit gateway.",
"VpcId": "*The ID of the VPC."
}
};
this.ec2_transitgatewayroute = {
"Type": "AWS::EC2::TransitGatewayRoute",
"Properties": {
"Blackhole": "Indicates whether to drop traffic if the target isn't available.",
"DestinationCidrBlock": "The CIDR range used for destination matches. Routing decisions are based on the most specific match.",
"TransitGatewayAttachmentId": "The ID of the attachment.",
"TransitGatewayRouteTableId": "*The ID of the transit gateway route table."
}
};
this.ec2_transitgatewayroutetable = {
"Type": "AWS::EC2::TransitGatewayRouteTable",
"Properties": {
"TransitGatewayId": "*The ID of the transit gateway."
}
};
this.ec2_transitgatewayroutetableassociation = {
"Type": "AWS::EC2::TransitGatewayRouteTableAssociation",
"Properties": {
"TransitGatewayAttachmentId": "*",
"TransitGatewayRouteTableId": "*"
}
};
this.ec2_transitgatewayroutetablepropagation = {
"Type": "AWS::EC2::TransitGatewayRouteTablePropagation",
"Properties": {
"TransitGatewayAttachmentId": "*",
"TransitGatewayRouteTableId": "*"
}
};
this.ec2_volumeattachment = {
"Type": "AWS::EC2::VolumeAttachment",
"Properties": {
"Device": "*How the device is exposed to the instance (e.g., /dev/sdh, or xvdh). Note: Before this resource can be deleted (and therefore the volume detached), you must first unmount the volume in the instance. Failure to do so results in the volume being stuck in the busy state while it is trying to detach, which could possibly damage the file system or the data it contains.",
"InstanceId": "*The ID of the instance to which the volume attaches. This value can be a reference to an AWS::EC2::Instance resource, or it can be the physical ID of an existing EC2 instance.",
"VolumeId": "*The ID of the Amazon EBS volume. The volume and instance must be within the same Availability Zone."
}
};
this.ec2_vpc = {
"Type": "AWS::EC2::VPC",
"Properties": {
"CidrBlock": "*The CIDR block you want the VPC to cover. ",
"EnableDnsSupport": "Boolean. Specifies whether DNS resolution is supported for the VPC. If this attribute is true, the Amazon DNS server resolves DNS hostnames for your instances to their corresponding IP addresses; otherwise, it does not. By default the value is set to true.",
"EnableDnsHostnames": "Boolean. Specifies whether the instances launched in the VPC get DNS hostnames. If this attribute is true, instances in the VPC get DNS hostnames; otherwise, they do not. You can only set EnableDnsHostnames to true if you also set the EnableDnsSupport attribute to true. By default, the value is set to false.",
"InstanceTenancy": "The allowed tenancy of instances launched into the VPC. Valid values: 'default' or 'dedicated'. "
}
};
this.ec2_vpccidrblock = {
"Type": "AWS::EC2::VPCCidrBlock",
"Properties": {
"AmazonProvidedIpv6CidrBlock": "Boolean. Whether to request an Amazon-provided IPv6 CIDR block with a /56 prefix length for the VPC. You can't specify the range of IPv6 addresses or the size of the CIDR block.",
"CidrBlock": "An IPv4 CIDR block to associate with the VPC.",
"VpcId": "*vpc id"
}
};
this.ec2_vpcdhcpoptionsassociation = {
"Type": "AWS::EC2::VPCDHCPOptionsAssociation",
"Properties": {
"DhcpOptionsId": "*The ID of the DHCP options you want to associate with the VPC. Specify default if you want the VPC to use no DHCP options.",
"VpcId": "*vpc id"
}
};
this.ec2_vpcendpoint = {
"Type": "AWS::EC2::VPCEndpoint",
"Properties": {
"VpcId": "*vpc id",
"RouteTableIds": ["List of string values. [Gateway endpoint] One or more route table IDs that are used by the VPC to reach the endpoint."],
"ServiceName": "*The name of the service.",
"PolicyDocument": { "info": "[Gateway endpoint] A policy to attach to the endpoint that controls access to the service. The policy must be valid JSON. " },
"VpcEndpointType": "The type of endpoint. Valid values are Interface and Gateway.",
"PrivateDnsEnabled": "Boolean. [Interface endpoint] Indicates whether to associate a private hosted zone with the specified VPC.",
"SubnetIds": ["[Interface endpoint] The ID of one or more subnets in which to create an endpoint network interface."],
"SecurityGroupIds": ["list of string values. [Interface endpoint] The ID of one or more security groups to associate with the endpoint network interface."]
}
};
this.ec2_vpcendpointconnectionnotification = {
"Type": "AWS::EC2::VPCEndpointConnectionNotification",
"Properties": {
"ConnectionEvents": ["*List of string values. One or more endpoint events for which to receive notifications. Valid values are Accept, Connect, Delete, and Reject."],
"VPCEndpointId": "The ID of the endpoint",
"ServiceId": "The ID of the endpoint service.",
"ConnectionNotificationArn": "*The ARN of the SNS topic for the notifications."
}
};
this.ec2_vpcendpointservice = {
"Type": "AWS::EC2::VPCEndpointService",
"Properties": {
"NetworkLoadBalancerArns": ["list of string values. The Amazon Resource Names (ARNs) of one or more Network Load Balancers for your service."],
"AcceptanceRequired": "Boolean. Indicate whether requests from service consumers to create an endpoint to your service must be accepted"
}
};
this.ec2_vpcendpointservicepermissions = {
"Type": "AWS::EC2::VPCEndpointServicePermissions",
"Properties": {
"AllowedPrincipals": ["The Amazon Resource Names (ARN) of one or more principals (IAM users, IAM roles, and AWS accounts). Permissions are granted to the principals in this list. To grant permissions to all principals, specify an asterisk. Permissions are revoked for principals not in this list. If the list is empty, then all permissions are revoked."],
"ServiceId": "*The ID of the VPC endpoint service."
}
};
this.ec2_vpcgatewayattachment = {
"Type": "AWS::EC2::VPCGatewayAttachment",
"Properties": {
"InternetGatewayId": "**Id of the internet gateway. You must specify either InternetGatewayId or VpnGatewayId, but not both.",
"VpcId": "*The ID of the VPC to associate with this gateway.",
"VpnGatewayId": "**The ID of the virtual private network (VPN) gateway to attach to the VPC. You must specify either InternetGatewayId or VpnGatewayId, but not both."
}
};
this.ec2_vpcpeeringconnection = {
"Type": "AWS::EC2::VPCPeeringConnection",
"Properties": {
"PeerVpcId": "*The ID of the VPC with which you are creating the peering connection.",
"VpcId": "*The ID of the VPC that is requesting a peering connection.",
"PeerOwnerId": "The AWS account ID of the owner of the VPC that you want to peer with.",
"PeerRegion": "The region code for the accepter VPC, if the accepter VPC is located in a region other than the region in which you make the request. The default is the region in which you make the request.",
"PeerRoleArn": "The Amazon Resource Name (ARN) of the VPC peer role for the peering connection in another AWS account."
}
};
this.ec2_vpnconnection = {
"Type": "AWS::EC2::VPNConnection",
"Properties": {
"Type": "*The type of VPN connection this virtual private gateway supports.e.g. ipsec.1",
"CustomerGatewayId": "*The ID of the customer gateway. This can either be an embedded JSON object or a reference to a Gateway ID.",
"StaticRoutesOnly": "**Boolean. Conditional. If you are creating a VPN connection for a device that does not support Border Gateway Protocol (BGP), you must specify true.",
"VpnGatewayId": "*The ID of the virtual private gateway. This can either be an embedded JSON object or a reference to a Gateway ID.",
"VpnTunnelOptionsSpecifications": ["Type: List of VpnTunnelOptionsSpecification. The tunnel options for the VPN connection. Duplicates not allowed.##"]
}
};
this.ec2_vpnconnectionroute = {
"Type": "AWS::EC2::VPNConnectionRoute",
"Properties": {
"DestinationCidrBlock": "*The CIDR block that is associated with the local subnet of the customer network.",
"VpnConnectionId": "*"
}
};
this.ec2_vpngateway = {
"Type": "AWS::EC2::VPNGateway",
"Properties": {
"AmazonSideAsn": "Long. The private Autonomous System Number (ASN) for the Amazon side of a BGP session.",
"Type": "*The type of VPN connection this virtual private gateway supports. The only valid value is 'ipsec.1'."
}
};
this.ec2_vpngatewayroutepropagation = {
"Type": "AWS::EC2::VPNGatewayRoutePropagation",
"Properties": {
"RouteTableIds": ["*List of string values of routetable ids. A list of routing table IDs that are associated with a VPC. The routing tables must be associated with the same VPC that the virtual private gateway is attached to."],
"VpnGatewayId": "*The ID of the virtual private gateway that is attached to a VPC. The virtual private gateway must be attached to the same VPC that the routing tables are associated with."
}
};
//Ec2 ends...
//Route53 starts...
this.route53_healthcheck = {
"Type": "AWS::Route53::HealthCheck",
"Properties": {
"HealthCheckConfig": { "info": "*Type: Route 53 HealthCheck HealthCheckConfig##" },
"HealthCheckTags": ["Type: A list of Amazon Route 53 HealthCheck HealthCheckTags##"]
}
};
this.route53_hostedzone = {
"Type": "AWS::Route53::HostedZone",
"Properties": {
"HostedZoneConfig": { "info": "Type: Route 53 HostedZoneConfig Property##" },
"HostedZoneTags": ["Type: List of Amazon Route 53 HostedZoneTags##"],
"Name": "*The name of the domain. For resource record types that include a domain name, specify a fully qualified domain name.",
"QueryLoggingConfig": { "info": "Type: Route 53 QueryLoggingConfig##" },
"VPCs": ["Type: List of Route 53 HostedZoneVPCs. One or more VPCs that you want to associate with this hosted zone. When you specify this property, AWS CloudFormation creates a private hosted zone.##"]
}
};
this.route53_recordset = {
"Type": "AWS::Route53::RecordSet",
"Properties": {
"AliasTarget": { "info": "**Type: AliasTarget. Required if you are creating an alias resource record set. If you specify this property, do not specify the TTL property. The alias uses a TTL value from the alias target record.##" },
"Comment": "Any comments that you want to include about the change batch. Important: If the record set is part of a record set group, this property isn't valid. Don't specify this property.",
"Failover": "Designates the record set as a PRIMARY or SECONDARY failover record set. When you have more than one resource performing the same function, you can configure Route 53 to check the health of your resources and use only health resources to respond to DNS queries. You cannot create nonfailover resource record sets that have the same Name and Type property values as failover resource record sets. If you specify this property, you must specify the SetIdentifier property.",
"GeoLocation": { "info": "Type: Route 53 Record Set GeoLocation Property. Describes how Route 53 responds to DNS queries based on the geographic origin of the query. This property is not compatible with the Region property.##" },
"HealthCheckId": "The health check ID that you want to apply to this record set. Route 53 returns this resource record set in response to a DNS query only while record set is healthy.",
"HostedZoneId": "**You must specify either the HostedZoneName or HostedZoneId, but you cannot specify both. If this record set is part of a record set group, do not specify this property.",
"HostedZoneName": "**You must specify either the HostedZoneName or HostedZoneId, but you cannot specify both. If this record set is part of a record set group, do not specify this property. The name of the domain for the hosted zone where you want to add the record set. When you create a stack using an AWS::Route53::RecordSet that specifies HostedZoneName, AWS CloudFormation attempts to find a hosted zone whose name matches the HostedZoneName. If AWS CloudFormation cannot find a hosted zone with a matching domain name, or if there is more than one hosted zone with the specified domain name, AWS CloudFormation will not create the stack. If you have multiple hosted zones with the same domain name, you must explicitly specify the hosted zone using HostedZoneId.",
"MultiValueAnswer": "Boolean. To route traffic approximately randomly to multiple resources, such as web servers, create one multivalue answer record for each resource and specify true for MultiValueAnswer. Note the following: If you associate a health check with a multivalue answer resource record set, Route 53 responds to DNS queries with the corresponding IP address only when the health check is healthy. If you don't associate a health check with a multivalue answer record, Route 53 always considers the record to be healthy. Amazon Route 53 responds to DNS queries with up to eight healthy records; if you have eight or fewer healthy records, Route 53 responds to all DNS queries with all the healthy records. If you have more than eight healthy records, Route 53 responds to different DNS resolvers with different combinations of healthy records. When all records are unhealthy, Route 53 responds to DNS queries with up to eight unhealthy records. If a resource becomes unavailable after a resolver caches a response, client software typically tries another of the IP addresses in the response.",
"Name": "*The name of the domain. You must specify a fully qualified domain name that ends with a period as the last label indication. If you omit the final period, Route 53 adds it.",
"Region": "Latency resource record sets only: The Amazon EC2 region where the resource that is specified in this resource record set resides. The resource typically is an AWS resource, for example, Amazon EC2 instance or an Elastic Load Balancing load balancer, and is referred to by an IP address or a DNS domain name, depending on the record type. When Route 53 receives a DNS query for a domain name and type for which you have created latency resource record sets, Route 53 selects the latency resource record set that has the lowest latency between the end user and the associated Amazon EC2 region. Route 53 then returns the value that is associated with the selected resource record set. The following restrictions must be followed: You can only specify one resource record per latency resource record set. You can only create one latency resource record set for each Amazon EC2 region. You are not required to create latency resource record sets for all Amazon EC2 regions. Route 53 will choose the region with the best latency from among the regions for which you create latency resource record sets. You cannot create both weighted and latency resource record sets that have the same values for the Name and Type elements. This property is not compatible with the GeoLocation property.",
"ResourceRecords": ["**Type: List of String values. If you don't specify the AliasTarget property, you must specify this property. If you are creating an alias resource record set, do not specify this property."],
"SetIdentifier": "**Required if you are creating a weighted, latency, failover, or geolocation resource record set. A unique identifier that differentiates among multiple resource record sets that have the same combination of DNS name and type.",
"TTL": "**The resource record cache time to live (TTL), in seconds. If you don't specify the AliasTarget property, you must specify this property. If you are creating an alias resource record set, do not specify this property. If you specify this property, do not specify the AliasTarget property.",
"Type": "* Valid values for basic resource record sets: A | AAAA | CAA | CNAME | MX | NAPTR | NS | PTR | SOA | SPF | SRV | TXT. Values for weighted, latency, geolocation, and failover resource record sets: A | AAAA | CAA | CNAME | MX | NAPTR | PTR | SPF | SRV | TXT. Valid values for multivalue answer resource record sets: A | AAAA | MX | NAPTR | PTR | SPF | SRV | TXT",
"Weight": "**Type: Number. Weight expects integer values. Weighted resource record sets only: Among resource record sets that have the same combination of DNS name and type, a value that determines what portion of traffic for the current resource record set is routed to the associated location."
}
};
this.route53_recordsetgroup = {
"Type": "AWS::Route53::RecordSetGroup",
"Properties": {
"Comment": "String",
"HostedZoneId": "**You must specify either the HostedZoneName or HostedZoneId, but you cannot specify both.",
"HostedZoneName": "**You must specify either the HostedZoneName or HostedZoneId, but you cannot specify both. When you create a stack using an AWS::Route53::RecordSet that specifies HostedZoneName, AWS CloudFormation attempts to find a hosted zone whose name matches the HostedZoneName. If AWS CloudFormation cannot find a hosted zone with a matching domain name, or if there is more than one hosted zone with the specified domain name, AWS CloudFormation will not create the stack.",
"RecordSets": ["*Type:: List of AWS::Route53::RecordSet objects, The maximum number of records is 1,000."]
}
};
this.r53_resolver_resolverendpoint = {
"Type": "AWS::Route53Resolver::ResolverEndpoint",
"Properties": {
"Direction": "*Valid values:INBOUND | OUTBOUND. Indicates whether the resolver endpoint allows inbound or outbound DNS queries.",
"IpAddresses": ["*Type: List of IpAddressRequest property types. The subnets and IP addresses in your VPC that you want DNS queries to pass through on the way from your VPCs to your network (for outbound endpoints) or on the way from your network to your VPCs (for inbound resolver endpoints).##"],
"Name": "A friendly name that lets you easily find a configuration in the Resolver dashboard in the Route 53 console.",
"SecurityGroupIds": ["*Type: List of String values. The ID of one or more security groups that you want to use to control access to this VPC. The security group that you specify must include one or more inbound rules (for inbound resolver endpoints) or outbound rules (for outbound resolver endpoints)."]
}
};
this.r53_resolver_resolverrule = {
"Type": "AWS::Route53Resolver::ResolverRule",
"Properties": {
"DomainName": "*DNS queries for this domain name are forwarded to the IP addresses that are specified in TargetIps. If a query matches multiple resolver rules (example.com and www.example.com), the query is routed using the resolver rule that contains the most specific domain name (www.example.com).",
"Name": "A friendly name that lets you easily find a rule in the Resolver dashboard in the Route 53 console.",
"ResolverEndpointId": "The ID of the outbound endpoint that the rule is associated with.",
"RuleType": "*When you want to forward DNS queries for specified domain name to resolvers on your network, specify FORWARD. When you have a forwarding rule to forward DNS queries for a domain to your network and you want Resolver to process queries for a subdomain of that domain, choose SYSTEM. For example, to forward DNS queries for example.com to resolvers on your network, you create a rule and specify FORWARD for RuleType. To then have Resolver process queries for apex.example.com, you create a rule and specify SYSTEM for RuleType.",
"TargetIps": ["Type: List of TargetAddress property types. When a DNS query matches the name that you specify in DomainName, the outbound endpoint forwards the query to the IP addresses that you specify here, typically the IP addresses for DNS resolvers on your network. Specify IPv4 addresses.##"]
}
};
this.r53_resolver_resolverruleassociation = {
"Type": "AWS::Route53Resolver::ResolverRuleAssociation",
"Properties": {
"Name": "The name of an association between a resolver rule and a VPC.",
"ResolverRuleId": "*The ID of the resolver rule that you associated with the VPC that is specified by VPCId.",
"VPCId": "*The ID of the VPC that you associated the resolver rule with."
}
};
//Route53 ends...
//IAM starts...
this.iam_accesskey = {
"Type": "AWS::IAM::AccessKey",
"Properties": {
"Serial": "Integer. This value is specific to AWS CloudFormation and can only be incremented. Incrementing this value notifies AWS CloudFormation that you want to rotate your access key. When you update your stack, AWS CloudFormation will replace the existing access key with a new key.",
"Status": "Valid values: Active or Inactive. The status of the access key. By default, AWS CloudFormation sets this property value to Active.",
"UserName": "*The name of the user that the new key will belong to."
}
};
this.iam_group = {
"Type": "AWS::IAM::Group",
"Properties": {
"GroupName": "A name for the IAM group. For valid values, see the GroupName parameter for the CreateGroup action in the IAM API Reference. If you don't specify a name, AWS CloudFormation generates a unique physical ID and uses that ID for the group name. Pattern: [\w+=,.@-]+ . Length Constraints: Minimum length of 1. Maximum length of 128.",
"ManagedPolicyArns": ["Type: List of String values. One or more managed policy ARNs to attach to this group."],
"Path": "String",
"Policies": ["The policies to associate with this group. For information about policies, see Overview of IAM Policies in the IAM User Guide."]
}
};
this.iam_instanceprofile = {
"Type": "AWS::IAM::InstanceProfile",
"Properties": {
"Path": "By default, AWS CloudFormation specifies / for the path.",
"Roles": ["Type: List of String values. The name of an existing IAM role to associate with this instance profile. Currently, you can assign a maximum of one role to an instance profile. "],
"InstanceProfileName": "The name of the instance profile that you want to create. This parameter allows (per its regex pattern) a string consisting of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: = , . @ -."
}
};
this.iam_managedpolicy = {
"Type": "AWS::IAM::ManagedPolicy",
"Properties": {
"Description": "String",
"Groups": ["Type: List of String values"],
"Path": "The path for the IAM policy. By default, the path is /",
"PolicyDocument": { "info": "Policies that define the permissions for this managed policy. NOTE: this policy is not available in 'Property Dealer' utility. Please use aws policy generate to do the same" },
"Roles": ["If a policy has a Ref to a role and if a resource (such as AWS::ECS::Service) also has a Ref to the same role, add a DependsOn attribute to the resource so that the resource depends on the policy. This dependency ensures that the role's policy is available throughout the resource's lifecycle. For example, when you delete a stack with an AWS::ECS::Service resource, the DependsOn attribute ensures that the AWS::ECS::Service resource can complete its deletion before its role's policy is deleted."],
"Users": ["Type: List of String values"],
"ManagedPolicyName": "A custom, friendly name for your IAM managed policy. For valid values, see the PolicyName parameter of the CreatePolicy action in the IAM API Reference."
}
};
this.iam_policy = {