@mavogel/cdk-vscode-server 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (439) hide show
  1. package/.jsii +4351 -0
  2. package/API.md +367 -0
  3. package/CONTRIBUTING.md +59 -0
  4. package/LICENSE +202 -0
  5. package/README.md +183 -0
  6. package/assets/installer/installer.lambda/index.js +112 -0
  7. package/assets/secret-retriever/secret-retriever.lambda/index.js +57 -0
  8. package/docs/img/vscode-server-ui-login-min.png +0 -0
  9. package/docs/img/vscode-server-ui-min.png +0 -0
  10. package/docs/img/vscode-server.drawio +108 -0
  11. package/docs/img/vscode-server.drawio-min.png +0 -0
  12. package/integ-tests/code-server login.html +48 -0
  13. package/integ-tests/functions/login-handler.ts +63 -0
  14. package/integ-tests/integ.al2023.ts +69 -0
  15. package/integ-tests/integ.al2023.ts.snapshot/IntegSetupVSCodeOnAl2023DefaultTestDeployAssert74D8F645.assets.json +32 -0
  16. package/integ-tests/integ.al2023.ts.snapshot/IntegSetupVSCodeOnAl2023DefaultTestDeployAssert74D8F645.template.json +337 -0
  17. package/integ-tests/integ.al2023.ts.snapshot/IntegTestStackAl2023.assets.json +110 -0
  18. package/integ-tests/integ.al2023.ts.snapshot/IntegTestStackAl2023.template.json +2459 -0
  19. package/integ-tests/integ.al2023.ts.snapshot/asset.23732f3d1982f7fb0da3bd6638a8107337bb767fea165b45eae12000a1dd67ce/index.js +6169 -0
  20. package/integ-tests/integ.al2023.ts.snapshot/asset.2819175352ad1ce0dae768e83fc328fb70fb5f10b4a8ff0ccbcb791f02b0716d/index.js +1 -0
  21. package/integ-tests/integ.al2023.ts.snapshot/asset.4dc48ffba382f93077a1e6824599bbd4ceb6f91eb3d9442eca3b85bdb1a20b1e/cfn-response.js +1 -0
  22. package/integ-tests/integ.al2023.ts.snapshot/asset.4dc48ffba382f93077a1e6824599bbd4ceb6f91eb3d9442eca3b85bdb1a20b1e/consts.js +1 -0
  23. package/integ-tests/integ.al2023.ts.snapshot/asset.4dc48ffba382f93077a1e6824599bbd4ceb6f91eb3d9442eca3b85bdb1a20b1e/framework.js +3 -0
  24. package/integ-tests/integ.al2023.ts.snapshot/asset.4dc48ffba382f93077a1e6824599bbd4ceb6f91eb3d9442eca3b85bdb1a20b1e/outbound.js +1 -0
  25. package/integ-tests/integ.al2023.ts.snapshot/asset.4dc48ffba382f93077a1e6824599bbd4ceb6f91eb3d9442eca3b85bdb1a20b1e/util.js +1 -0
  26. package/integ-tests/integ.al2023.ts.snapshot/asset.512cf155ada4793b37a885c1aa6d9bb8f534e88bac6f63c69672d4d73df2decf.lambda/index.js +112 -0
  27. package/integ-tests/integ.al2023.ts.snapshot/asset.781ab0ab74634cdaf61539ab208ab777829ef07097ac21f95b9e15a3b1eedc1b.lambda/index.js +57 -0
  28. package/integ-tests/integ.al2023.ts.snapshot/asset.c504585dae89ce8e394d7744ccae054318e7d1aff14afb545438d173d51dc97d.bundle/index.js +30572 -0
  29. package/integ-tests/integ.al2023.ts.snapshot/asset.ce2f3595a340d6c519a65888ef97e3b9b64f053f83608e32cc28162e22d7d99a/index.js +1 -0
  30. package/integ-tests/integ.al2023.ts.snapshot/asset.ee7de53d64cc9d6248fa6aa550f92358f6c907b5efd6f3298aeab1b5e7ea358a/__entrypoint__.js +1 -0
  31. package/integ-tests/integ.al2023.ts.snapshot/asset.ee7de53d64cc9d6248fa6aa550f92358f6c907b5efd6f3298aeab1b5e7ea358a/index.js +1 -0
  32. package/integ-tests/integ.al2023.ts.snapshot/cdk.out +1 -0
  33. package/integ-tests/integ.al2023.ts.snapshot/integ.json +22 -0
  34. package/integ-tests/integ.al2023.ts.snapshot/manifest.json +510 -0
  35. package/integ-tests/integ.al2023.ts.snapshot/tree.json +2944 -0
  36. package/integ-tests/integ.ubuntu.ts +66 -0
  37. package/integ-tests/integ.ubuntu.ts.snapshot/IntegSetupVSCodeOnUbuntuDefaultTestDeployAssertFF8DF2C5.assets.json +32 -0
  38. package/integ-tests/integ.ubuntu.ts.snapshot/IntegSetupVSCodeOnUbuntuDefaultTestDeployAssertFF8DF2C5.template.json +337 -0
  39. package/integ-tests/integ.ubuntu.ts.snapshot/IntegTestStackUbuntu22.assets.json +110 -0
  40. package/integ-tests/integ.ubuntu.ts.snapshot/IntegTestStackUbuntu22.template.json +2477 -0
  41. package/integ-tests/integ.ubuntu.ts.snapshot/asset.23732f3d1982f7fb0da3bd6638a8107337bb767fea165b45eae12000a1dd67ce/index.js +6169 -0
  42. package/integ-tests/integ.ubuntu.ts.snapshot/asset.2819175352ad1ce0dae768e83fc328fb70fb5f10b4a8ff0ccbcb791f02b0716d/index.js +1 -0
  43. package/integ-tests/integ.ubuntu.ts.snapshot/asset.4dc48ffba382f93077a1e6824599bbd4ceb6f91eb3d9442eca3b85bdb1a20b1e/cfn-response.js +1 -0
  44. package/integ-tests/integ.ubuntu.ts.snapshot/asset.4dc48ffba382f93077a1e6824599bbd4ceb6f91eb3d9442eca3b85bdb1a20b1e/consts.js +1 -0
  45. package/integ-tests/integ.ubuntu.ts.snapshot/asset.4dc48ffba382f93077a1e6824599bbd4ceb6f91eb3d9442eca3b85bdb1a20b1e/framework.js +3 -0
  46. package/integ-tests/integ.ubuntu.ts.snapshot/asset.4dc48ffba382f93077a1e6824599bbd4ceb6f91eb3d9442eca3b85bdb1a20b1e/outbound.js +1 -0
  47. package/integ-tests/integ.ubuntu.ts.snapshot/asset.4dc48ffba382f93077a1e6824599bbd4ceb6f91eb3d9442eca3b85bdb1a20b1e/util.js +1 -0
  48. package/integ-tests/integ.ubuntu.ts.snapshot/asset.512cf155ada4793b37a885c1aa6d9bb8f534e88bac6f63c69672d4d73df2decf.lambda/index.js +112 -0
  49. package/integ-tests/integ.ubuntu.ts.snapshot/asset.781ab0ab74634cdaf61539ab208ab777829ef07097ac21f95b9e15a3b1eedc1b.lambda/index.js +57 -0
  50. package/integ-tests/integ.ubuntu.ts.snapshot/asset.c504585dae89ce8e394d7744ccae054318e7d1aff14afb545438d173d51dc97d.bundle/index.js +30572 -0
  51. package/integ-tests/integ.ubuntu.ts.snapshot/asset.ce2f3595a340d6c519a65888ef97e3b9b64f053f83608e32cc28162e22d7d99a/index.js +1 -0
  52. package/integ-tests/integ.ubuntu.ts.snapshot/asset.ee7de53d64cc9d6248fa6aa550f92358f6c907b5efd6f3298aeab1b5e7ea358a/__entrypoint__.js +1 -0
  53. package/integ-tests/integ.ubuntu.ts.snapshot/asset.ee7de53d64cc9d6248fa6aa550f92358f6c907b5efd6f3298aeab1b5e7ea358a/index.js +1 -0
  54. package/integ-tests/integ.ubuntu.ts.snapshot/cdk.out +1 -0
  55. package/integ-tests/integ.ubuntu.ts.snapshot/integ.json +22 -0
  56. package/integ-tests/integ.ubuntu.ts.snapshot/manifest.json +510 -0
  57. package/integ-tests/integ.ubuntu.ts.snapshot/tree.json +2962 -0
  58. package/lib/index.d.ts +1 -0
  59. package/lib/index.js +18 -0
  60. package/lib/installer/installer-function.d.ts +13 -0
  61. package/lib/installer/installer-function.js +23 -0
  62. package/lib/installer/installer.d.ts +64 -0
  63. package/lib/installer/installer.js +707 -0
  64. package/lib/installer/installer.lambda.d.ts +3 -0
  65. package/lib/installer/installer.lambda.js +94 -0
  66. package/lib/mappings.d.ts +2 -0
  67. package/lib/mappings.js +25 -0
  68. package/lib/prefixlist-retriever/prefixlist-retriever.d.ts +16 -0
  69. package/lib/prefixlist-retriever/prefixlist-retriever.js +56 -0
  70. package/lib/secret-retriever/secret-retriever-function.d.ts +13 -0
  71. package/lib/secret-retriever/secret-retriever-function.js +23 -0
  72. package/lib/secret-retriever/secret-retriever.d.ts +33 -0
  73. package/lib/secret-retriever/secret-retriever.js +72 -0
  74. package/lib/secret-retriever/secret-retriever.lambda.d.ts +2 -0
  75. package/lib/secret-retriever/secret-retriever.lambda.js +36 -0
  76. package/lib/vscode-server.d.ts +97 -0
  77. package/lib/vscode-server.js +417 -0
  78. package/node_modules/boolbase/README.md +10 -0
  79. package/node_modules/boolbase/index.js +8 -0
  80. package/node_modules/boolbase/package.json +23 -0
  81. package/node_modules/css-select/LICENSE +11 -0
  82. package/node_modules/css-select/README.md +264 -0
  83. package/node_modules/css-select/lib/attributes.d.ts +7 -0
  84. package/node_modules/css-select/lib/attributes.d.ts.map +1 -0
  85. package/node_modules/css-select/lib/attributes.js +236 -0
  86. package/node_modules/css-select/lib/attributes.js.map +1 -0
  87. package/node_modules/css-select/lib/compile.d.ts +13 -0
  88. package/node_modules/css-select/lib/compile.d.ts.map +1 -0
  89. package/node_modules/css-select/lib/compile.js +151 -0
  90. package/node_modules/css-select/lib/compile.js.map +1 -0
  91. package/node_modules/css-select/lib/esm/attributes.d.ts +7 -0
  92. package/node_modules/css-select/lib/esm/attributes.d.ts.map +1 -0
  93. package/node_modules/css-select/lib/esm/attributes.js +222 -0
  94. package/node_modules/css-select/lib/esm/attributes.js.map +1 -0
  95. package/node_modules/css-select/lib/esm/compile.d.ts +13 -0
  96. package/node_modules/css-select/lib/esm/compile.d.ts.map +1 -0
  97. package/node_modules/css-select/lib/esm/compile.js +115 -0
  98. package/node_modules/css-select/lib/esm/compile.js.map +1 -0
  99. package/node_modules/css-select/lib/esm/general.d.ts +3 -0
  100. package/node_modules/css-select/lib/esm/general.d.ts.map +1 -0
  101. package/node_modules/css-select/lib/esm/general.js +144 -0
  102. package/node_modules/css-select/lib/esm/general.js.map +1 -0
  103. package/node_modules/css-select/lib/esm/index.d.ts +50 -0
  104. package/node_modules/css-select/lib/esm/index.d.ts.map +1 -0
  105. package/node_modules/css-select/lib/esm/index.js +115 -0
  106. package/node_modules/css-select/lib/esm/index.js.map +1 -0
  107. package/node_modules/css-select/lib/esm/package.json +1 -0
  108. package/node_modules/css-select/lib/esm/pseudo-selectors/aliases.d.ts +5 -0
  109. package/node_modules/css-select/lib/esm/pseudo-selectors/aliases.d.ts.map +1 -0
  110. package/node_modules/css-select/lib/esm/pseudo-selectors/aliases.js +35 -0
  111. package/node_modules/css-select/lib/esm/pseudo-selectors/aliases.js.map +1 -0
  112. package/node_modules/css-select/lib/esm/pseudo-selectors/filters.d.ts +4 -0
  113. package/node_modules/css-select/lib/esm/pseudo-selectors/filters.d.ts.map +1 -0
  114. package/node_modules/css-select/lib/esm/pseudo-selectors/filters.js +143 -0
  115. package/node_modules/css-select/lib/esm/pseudo-selectors/filters.js.map +1 -0
  116. package/node_modules/css-select/lib/esm/pseudo-selectors/index.d.ts +8 -0
  117. package/node_modules/css-select/lib/esm/pseudo-selectors/index.d.ts.map +1 -0
  118. package/node_modules/css-select/lib/esm/pseudo-selectors/index.js +40 -0
  119. package/node_modules/css-select/lib/esm/pseudo-selectors/index.js.map +1 -0
  120. package/node_modules/css-select/lib/esm/pseudo-selectors/pseudos.d.ts +6 -0
  121. package/node_modules/css-select/lib/esm/pseudo-selectors/pseudos.d.ts.map +1 -0
  122. package/node_modules/css-select/lib/esm/pseudo-selectors/pseudos.js +79 -0
  123. package/node_modules/css-select/lib/esm/pseudo-selectors/pseudos.js.map +1 -0
  124. package/node_modules/css-select/lib/esm/pseudo-selectors/subselects.d.ts +9 -0
  125. package/node_modules/css-select/lib/esm/pseudo-selectors/subselects.d.ts.map +1 -0
  126. package/node_modules/css-select/lib/esm/pseudo-selectors/subselects.js +94 -0
  127. package/node_modules/css-select/lib/esm/pseudo-selectors/subselects.js.map +1 -0
  128. package/node_modules/css-select/lib/esm/sort.d.ts +12 -0
  129. package/node_modules/css-select/lib/esm/sort.d.ts.map +1 -0
  130. package/node_modules/css-select/lib/esm/sort.js +79 -0
  131. package/node_modules/css-select/lib/esm/sort.js.map +1 -0
  132. package/node_modules/css-select/lib/esm/types.d.ts +167 -0
  133. package/node_modules/css-select/lib/esm/types.d.ts.map +1 -0
  134. package/node_modules/css-select/lib/esm/types.js +2 -0
  135. package/node_modules/css-select/lib/esm/types.js.map +1 -0
  136. package/node_modules/css-select/lib/general.d.ts +3 -0
  137. package/node_modules/css-select/lib/general.d.ts.map +1 -0
  138. package/node_modules/css-select/lib/general.js +148 -0
  139. package/node_modules/css-select/lib/general.js.map +1 -0
  140. package/node_modules/css-select/lib/index.d.ts +50 -0
  141. package/node_modules/css-select/lib/index.d.ts.map +1 -0
  142. package/node_modules/css-select/lib/index.js +154 -0
  143. package/node_modules/css-select/lib/index.js.map +1 -0
  144. package/node_modules/css-select/lib/pseudo-selectors/aliases.d.ts +5 -0
  145. package/node_modules/css-select/lib/pseudo-selectors/aliases.d.ts.map +1 -0
  146. package/node_modules/css-select/lib/pseudo-selectors/aliases.js +34 -0
  147. package/node_modules/css-select/lib/pseudo-selectors/aliases.js.map +1 -0
  148. package/node_modules/css-select/lib/pseudo-selectors/filters.d.ts +4 -0
  149. package/node_modules/css-select/lib/pseudo-selectors/filters.d.ts.map +1 -0
  150. package/node_modules/css-select/lib/pseudo-selectors/filters.js +157 -0
  151. package/node_modules/css-select/lib/pseudo-selectors/filters.js.map +1 -0
  152. package/node_modules/css-select/lib/pseudo-selectors/index.d.ts +8 -0
  153. package/node_modules/css-select/lib/pseudo-selectors/index.d.ts.map +1 -0
  154. package/node_modules/css-select/lib/pseudo-selectors/index.js +46 -0
  155. package/node_modules/css-select/lib/pseudo-selectors/index.js.map +1 -0
  156. package/node_modules/css-select/lib/pseudo-selectors/pseudos.d.ts +6 -0
  157. package/node_modules/css-select/lib/pseudo-selectors/pseudos.d.ts.map +1 -0
  158. package/node_modules/css-select/lib/pseudo-selectors/pseudos.js +93 -0
  159. package/node_modules/css-select/lib/pseudo-selectors/pseudos.js.map +1 -0
  160. package/node_modules/css-select/lib/pseudo-selectors/subselects.d.ts +9 -0
  161. package/node_modules/css-select/lib/pseudo-selectors/subselects.d.ts.map +1 -0
  162. package/node_modules/css-select/lib/pseudo-selectors/subselects.js +112 -0
  163. package/node_modules/css-select/lib/pseudo-selectors/subselects.js.map +1 -0
  164. package/node_modules/css-select/lib/sort.d.ts +12 -0
  165. package/node_modules/css-select/lib/sort.d.ts.map +1 -0
  166. package/node_modules/css-select/lib/sort.js +84 -0
  167. package/node_modules/css-select/lib/sort.js.map +1 -0
  168. package/node_modules/css-select/lib/types.d.ts +167 -0
  169. package/node_modules/css-select/lib/types.d.ts.map +1 -0
  170. package/node_modules/css-select/lib/types.js +3 -0
  171. package/node_modules/css-select/lib/types.js.map +1 -0
  172. package/node_modules/css-select/package.json +81 -0
  173. package/node_modules/css-what/LICENSE +11 -0
  174. package/node_modules/css-what/lib/commonjs/index.d.ts +4 -0
  175. package/node_modules/css-what/lib/commonjs/index.d.ts.map +1 -0
  176. package/node_modules/css-what/lib/commonjs/index.js +23 -0
  177. package/node_modules/css-what/lib/commonjs/parse.d.ts +20 -0
  178. package/node_modules/css-what/lib/commonjs/parse.d.ts.map +1 -0
  179. package/node_modules/css-what/lib/commonjs/parse.js +425 -0
  180. package/node_modules/css-what/lib/commonjs/stringify.d.ts +8 -0
  181. package/node_modules/css-what/lib/commonjs/stringify.d.ts.map +1 -0
  182. package/node_modules/css-what/lib/commonjs/stringify.js +138 -0
  183. package/node_modules/css-what/lib/commonjs/types.d.ts +70 -0
  184. package/node_modules/css-what/lib/commonjs/types.d.ts.map +1 -0
  185. package/node_modules/css-what/lib/commonjs/types.js +42 -0
  186. package/node_modules/css-what/lib/es/index.d.ts +4 -0
  187. package/node_modules/css-what/lib/es/index.d.ts.map +1 -0
  188. package/node_modules/css-what/lib/es/index.js +3 -0
  189. package/node_modules/css-what/lib/es/parse.d.ts +20 -0
  190. package/node_modules/css-what/lib/es/parse.d.ts.map +1 -0
  191. package/node_modules/css-what/lib/es/parse.js +420 -0
  192. package/node_modules/css-what/lib/es/stringify.d.ts +8 -0
  193. package/node_modules/css-what/lib/es/stringify.d.ts.map +1 -0
  194. package/node_modules/css-what/lib/es/stringify.js +126 -0
  195. package/node_modules/css-what/lib/es/types.d.ts +70 -0
  196. package/node_modules/css-what/lib/es/types.d.ts.map +1 -0
  197. package/node_modules/css-what/lib/es/types.js +39 -0
  198. package/node_modules/css-what/package.json +59 -0
  199. package/node_modules/css-what/readme.md +69 -0
  200. package/node_modules/dom-serializer/LICENSE +11 -0
  201. package/node_modules/dom-serializer/README.md +109 -0
  202. package/node_modules/dom-serializer/lib/esm/foreignNames.d.ts +3 -0
  203. package/node_modules/dom-serializer/lib/esm/foreignNames.d.ts.map +1 -0
  204. package/node_modules/dom-serializer/lib/esm/foreignNames.js +100 -0
  205. package/node_modules/dom-serializer/lib/esm/index.d.ts +52 -0
  206. package/node_modules/dom-serializer/lib/esm/index.d.ts.map +1 -0
  207. package/node_modules/dom-serializer/lib/esm/index.js +190 -0
  208. package/node_modules/dom-serializer/lib/esm/package.json +1 -0
  209. package/node_modules/dom-serializer/lib/foreignNames.d.ts +3 -0
  210. package/node_modules/dom-serializer/lib/foreignNames.d.ts.map +1 -0
  211. package/node_modules/dom-serializer/lib/foreignNames.js +103 -0
  212. package/node_modules/dom-serializer/lib/index.d.ts +52 -0
  213. package/node_modules/dom-serializer/lib/index.d.ts.map +1 -0
  214. package/node_modules/dom-serializer/lib/index.js +229 -0
  215. package/node_modules/dom-serializer/package.json +69 -0
  216. package/node_modules/domelementtype/LICENSE +11 -0
  217. package/node_modules/domelementtype/lib/esm/index.d.ts +48 -0
  218. package/node_modules/domelementtype/lib/esm/index.d.ts.map +1 -0
  219. package/node_modules/domelementtype/lib/esm/index.js +51 -0
  220. package/node_modules/domelementtype/lib/esm/package.json +1 -0
  221. package/node_modules/domelementtype/lib/index.d.ts +48 -0
  222. package/node_modules/domelementtype/lib/index.d.ts.map +1 -0
  223. package/node_modules/domelementtype/lib/index.js +55 -0
  224. package/node_modules/domelementtype/package.json +54 -0
  225. package/node_modules/domelementtype/readme.md +1 -0
  226. package/node_modules/domhandler/LICENSE +11 -0
  227. package/node_modules/domhandler/lib/esm/index.d.ts +76 -0
  228. package/node_modules/domhandler/lib/esm/index.d.ts.map +1 -0
  229. package/node_modules/domhandler/lib/esm/index.js +146 -0
  230. package/node_modules/domhandler/lib/esm/node.d.ts +245 -0
  231. package/node_modules/domhandler/lib/esm/node.d.ts.map +1 -0
  232. package/node_modules/domhandler/lib/esm/node.js +338 -0
  233. package/node_modules/domhandler/lib/esm/package.json +1 -0
  234. package/node_modules/domhandler/lib/index.d.ts +76 -0
  235. package/node_modules/domhandler/lib/index.d.ts.map +1 -0
  236. package/node_modules/domhandler/lib/index.js +165 -0
  237. package/node_modules/domhandler/lib/node.d.ts +245 -0
  238. package/node_modules/domhandler/lib/node.d.ts.map +1 -0
  239. package/node_modules/domhandler/lib/node.js +474 -0
  240. package/node_modules/domhandler/package.json +73 -0
  241. package/node_modules/domhandler/readme.md +92 -0
  242. package/node_modules/domutils/LICENSE +11 -0
  243. package/node_modules/domutils/lib/esm/feeds.d.ts +71 -0
  244. package/node_modules/domutils/lib/esm/feeds.d.ts.map +1 -0
  245. package/node_modules/domutils/lib/esm/feeds.js +183 -0
  246. package/node_modules/domutils/lib/esm/feeds.js.map +1 -0
  247. package/node_modules/domutils/lib/esm/helpers.d.ts +59 -0
  248. package/node_modules/domutils/lib/esm/helpers.d.ts.map +1 -0
  249. package/node_modules/domutils/lib/esm/helpers.js +136 -0
  250. package/node_modules/domutils/lib/esm/helpers.js.map +1 -0
  251. package/node_modules/domutils/lib/esm/index.d.ts +10 -0
  252. package/node_modules/domutils/lib/esm/index.d.ts.map +1 -0
  253. package/node_modules/domutils/lib/esm/index.js +10 -0
  254. package/node_modules/domutils/lib/esm/index.js.map +1 -0
  255. package/node_modules/domutils/lib/esm/legacy.d.ts +79 -0
  256. package/node_modules/domutils/lib/esm/legacy.d.ts.map +1 -0
  257. package/node_modules/domutils/lib/esm/legacy.js +152 -0
  258. package/node_modules/domutils/lib/esm/legacy.js.map +1 -0
  259. package/node_modules/domutils/lib/esm/manipulation.d.ts +49 -0
  260. package/node_modules/domutils/lib/esm/manipulation.d.ts.map +1 -0
  261. package/node_modules/domutils/lib/esm/manipulation.js +134 -0
  262. package/node_modules/domutils/lib/esm/manipulation.js.map +1 -0
  263. package/node_modules/domutils/lib/esm/package.json +1 -0
  264. package/node_modules/domutils/lib/esm/querying.d.ts +64 -0
  265. package/node_modules/domutils/lib/esm/querying.d.ts.map +1 -0
  266. package/node_modules/domutils/lib/esm/querying.js +142 -0
  267. package/node_modules/domutils/lib/esm/querying.js.map +1 -0
  268. package/node_modules/domutils/lib/esm/stringify.d.ts +46 -0
  269. package/node_modules/domutils/lib/esm/stringify.d.ts.map +1 -0
  270. package/node_modules/domutils/lib/esm/stringify.js +81 -0
  271. package/node_modules/domutils/lib/esm/stringify.js.map +1 -0
  272. package/node_modules/domutils/lib/esm/traversal.d.ts +67 -0
  273. package/node_modules/domutils/lib/esm/traversal.d.ts.map +1 -0
  274. package/node_modules/domutils/lib/esm/traversal.js +112 -0
  275. package/node_modules/domutils/lib/esm/traversal.js.map +1 -0
  276. package/node_modules/domutils/lib/feeds.d.ts +71 -0
  277. package/node_modules/domutils/lib/feeds.d.ts.map +1 -0
  278. package/node_modules/domutils/lib/feeds.js +190 -0
  279. package/node_modules/domutils/lib/feeds.js.map +1 -0
  280. package/node_modules/domutils/lib/helpers.d.ts +59 -0
  281. package/node_modules/domutils/lib/helpers.d.ts.map +1 -0
  282. package/node_modules/domutils/lib/helpers.js +142 -0
  283. package/node_modules/domutils/lib/helpers.js.map +1 -0
  284. package/node_modules/domutils/lib/index.d.ts +10 -0
  285. package/node_modules/domutils/lib/index.d.ts.map +1 -0
  286. package/node_modules/domutils/lib/index.js +33 -0
  287. package/node_modules/domutils/lib/index.js.map +1 -0
  288. package/node_modules/domutils/lib/legacy.d.ts +79 -0
  289. package/node_modules/domutils/lib/legacy.d.ts.map +1 -0
  290. package/node_modules/domutils/lib/legacy.js +168 -0
  291. package/node_modules/domutils/lib/legacy.js.map +1 -0
  292. package/node_modules/domutils/lib/manipulation.d.ts +49 -0
  293. package/node_modules/domutils/lib/manipulation.d.ts.map +1 -0
  294. package/node_modules/domutils/lib/manipulation.js +142 -0
  295. package/node_modules/domutils/lib/manipulation.js.map +1 -0
  296. package/node_modules/domutils/lib/querying.d.ts +64 -0
  297. package/node_modules/domutils/lib/querying.d.ts.map +1 -0
  298. package/node_modules/domutils/lib/querying.js +155 -0
  299. package/node_modules/domutils/lib/querying.js.map +1 -0
  300. package/node_modules/domutils/lib/stringify.d.ts +46 -0
  301. package/node_modules/domutils/lib/stringify.d.ts.map +1 -0
  302. package/node_modules/domutils/lib/stringify.js +91 -0
  303. package/node_modules/domutils/lib/stringify.js.map +1 -0
  304. package/node_modules/domutils/lib/traversal.d.ts +67 -0
  305. package/node_modules/domutils/lib/traversal.d.ts.map +1 -0
  306. package/node_modules/domutils/lib/traversal.js +125 -0
  307. package/node_modules/domutils/lib/traversal.js.map +1 -0
  308. package/node_modules/domutils/package.json +79 -0
  309. package/node_modules/domutils/readme.md +31 -0
  310. package/node_modules/entities/LICENSE +11 -0
  311. package/node_modules/entities/lib/decode.d.ts +211 -0
  312. package/node_modules/entities/lib/decode.d.ts.map +1 -0
  313. package/node_modules/entities/lib/decode.js +536 -0
  314. package/node_modules/entities/lib/decode.js.map +1 -0
  315. package/node_modules/entities/lib/decode_codepoint.d.ts +19 -0
  316. package/node_modules/entities/lib/decode_codepoint.d.ts.map +1 -0
  317. package/node_modules/entities/lib/decode_codepoint.js +76 -0
  318. package/node_modules/entities/lib/decode_codepoint.js.map +1 -0
  319. package/node_modules/entities/lib/encode.d.ts +22 -0
  320. package/node_modules/entities/lib/encode.d.ts.map +1 -0
  321. package/node_modules/entities/lib/encode.js +77 -0
  322. package/node_modules/entities/lib/encode.js.map +1 -0
  323. package/node_modules/entities/lib/escape.d.ts +43 -0
  324. package/node_modules/entities/lib/escape.d.ts.map +1 -0
  325. package/node_modules/entities/lib/escape.js +122 -0
  326. package/node_modules/entities/lib/escape.js.map +1 -0
  327. package/node_modules/entities/lib/esm/decode.d.ts +211 -0
  328. package/node_modules/entities/lib/esm/decode.d.ts.map +1 -0
  329. package/node_modules/entities/lib/esm/decode.js +496 -0
  330. package/node_modules/entities/lib/esm/decode.js.map +1 -0
  331. package/node_modules/entities/lib/esm/decode_codepoint.d.ts +19 -0
  332. package/node_modules/entities/lib/esm/decode_codepoint.d.ts.map +1 -0
  333. package/node_modules/entities/lib/esm/decode_codepoint.js +71 -0
  334. package/node_modules/entities/lib/esm/decode_codepoint.js.map +1 -0
  335. package/node_modules/entities/lib/esm/encode.d.ts +22 -0
  336. package/node_modules/entities/lib/esm/encode.d.ts.map +1 -0
  337. package/node_modules/entities/lib/esm/encode.js +69 -0
  338. package/node_modules/entities/lib/esm/encode.js.map +1 -0
  339. package/node_modules/entities/lib/esm/escape.d.ts +43 -0
  340. package/node_modules/entities/lib/esm/escape.d.ts.map +1 -0
  341. package/node_modules/entities/lib/esm/escape.js +116 -0
  342. package/node_modules/entities/lib/esm/escape.js.map +1 -0
  343. package/node_modules/entities/lib/esm/generated/decode-data-html.d.ts +3 -0
  344. package/node_modules/entities/lib/esm/generated/decode-data-html.d.ts.map +1 -0
  345. package/node_modules/entities/lib/esm/generated/decode-data-html.js +7 -0
  346. package/node_modules/entities/lib/esm/generated/decode-data-html.js.map +1 -0
  347. package/node_modules/entities/lib/esm/generated/decode-data-xml.d.ts +3 -0
  348. package/node_modules/entities/lib/esm/generated/decode-data-xml.d.ts.map +1 -0
  349. package/node_modules/entities/lib/esm/generated/decode-data-xml.js +7 -0
  350. package/node_modules/entities/lib/esm/generated/decode-data-xml.js.map +1 -0
  351. package/node_modules/entities/lib/esm/generated/encode-html.d.ts +8 -0
  352. package/node_modules/entities/lib/esm/generated/encode-html.d.ts.map +1 -0
  353. package/node_modules/entities/lib/esm/generated/encode-html.js +10 -0
  354. package/node_modules/entities/lib/esm/generated/encode-html.js.map +1 -0
  355. package/node_modules/entities/lib/esm/index.d.ts +96 -0
  356. package/node_modules/entities/lib/esm/index.d.ts.map +1 -0
  357. package/node_modules/entities/lib/esm/index.js +99 -0
  358. package/node_modules/entities/lib/esm/index.js.map +1 -0
  359. package/node_modules/entities/lib/esm/package.json +1 -0
  360. package/node_modules/entities/lib/generated/decode-data-html.d.ts +3 -0
  361. package/node_modules/entities/lib/generated/decode-data-html.d.ts.map +1 -0
  362. package/node_modules/entities/lib/generated/decode-data-html.js +9 -0
  363. package/node_modules/entities/lib/generated/decode-data-html.js.map +1 -0
  364. package/node_modules/entities/lib/generated/decode-data-xml.d.ts +3 -0
  365. package/node_modules/entities/lib/generated/decode-data-xml.d.ts.map +1 -0
  366. package/node_modules/entities/lib/generated/decode-data-xml.js +9 -0
  367. package/node_modules/entities/lib/generated/decode-data-xml.js.map +1 -0
  368. package/node_modules/entities/lib/generated/encode-html.d.ts +8 -0
  369. package/node_modules/entities/lib/generated/encode-html.d.ts.map +1 -0
  370. package/node_modules/entities/lib/generated/encode-html.js +12 -0
  371. package/node_modules/entities/lib/generated/encode-html.js.map +1 -0
  372. package/node_modules/entities/lib/index.d.ts +96 -0
  373. package/node_modules/entities/lib/index.d.ts.map +1 -0
  374. package/node_modules/entities/lib/index.js +126 -0
  375. package/node_modules/entities/lib/index.js.map +1 -0
  376. package/node_modules/entities/package.json +90 -0
  377. package/node_modules/entities/readme.md +122 -0
  378. package/node_modules/he/LICENSE-MIT.txt +20 -0
  379. package/node_modules/he/README.md +379 -0
  380. package/node_modules/he/bin/he +148 -0
  381. package/node_modules/he/he.js +345 -0
  382. package/node_modules/he/man/he.1 +78 -0
  383. package/node_modules/he/package.json +58 -0
  384. package/node_modules/node-html-parser/CHANGELOG.md +137 -0
  385. package/node_modules/node-html-parser/LICENSE +7 -0
  386. package/node_modules/node-html-parser/README.md +365 -0
  387. package/node_modules/node-html-parser/dist/back.d.ts +1 -0
  388. package/node_modules/node-html-parser/dist/back.js +6 -0
  389. package/node_modules/node-html-parser/dist/index.d.ts +20 -0
  390. package/node_modules/node-html-parser/dist/index.js +32 -0
  391. package/node_modules/node-html-parser/dist/main.js +1646 -0
  392. package/node_modules/node-html-parser/dist/matcher.d.ts +6 -0
  393. package/node_modules/node-html-parser/dist/matcher.js +106 -0
  394. package/node_modules/node-html-parser/dist/nodes/comment.d.ts +20 -0
  395. package/node_modules/node-html-parser/dist/nodes/comment.js +57 -0
  396. package/node_modules/node-html-parser/dist/nodes/html.d.ts +240 -0
  397. package/node_modules/node-html-parser/dist/nodes/html.js +1218 -0
  398. package/node_modules/node-html-parser/dist/nodes/node.d.ts +24 -0
  399. package/node_modules/node-html-parser/dist/nodes/node.js +52 -0
  400. package/node_modules/node-html-parser/dist/nodes/text.d.ts +44 -0
  401. package/node_modules/node-html-parser/dist/nodes/text.js +144 -0
  402. package/node_modules/node-html-parser/dist/nodes/type.d.ts +6 -0
  403. package/node_modules/node-html-parser/dist/nodes/type.js +9 -0
  404. package/node_modules/node-html-parser/dist/parse.d.ts +1 -0
  405. package/node_modules/node-html-parser/dist/parse.js +5 -0
  406. package/node_modules/node-html-parser/dist/valid.d.ts +6 -0
  407. package/node_modules/node-html-parser/dist/valid.js +13 -0
  408. package/node_modules/node-html-parser/dist/void-tag.d.ts +7 -0
  409. package/node_modules/node-html-parser/dist/void-tag.js +29 -0
  410. package/node_modules/node-html-parser/package.json +114 -0
  411. package/node_modules/nth-check/LICENSE +11 -0
  412. package/node_modules/nth-check/README.md +136 -0
  413. package/node_modules/nth-check/lib/compile.d.ts +55 -0
  414. package/node_modules/nth-check/lib/compile.d.ts.map +1 -0
  415. package/node_modules/nth-check/lib/compile.js +121 -0
  416. package/node_modules/nth-check/lib/compile.js.map +1 -0
  417. package/node_modules/nth-check/lib/esm/compile.d.ts +55 -0
  418. package/node_modules/nth-check/lib/esm/compile.d.ts.map +1 -0
  419. package/node_modules/nth-check/lib/esm/compile.js +113 -0
  420. package/node_modules/nth-check/lib/esm/compile.js.map +1 -0
  421. package/node_modules/nth-check/lib/esm/index.d.ts +59 -0
  422. package/node_modules/nth-check/lib/esm/index.d.ts.map +1 -0
  423. package/node_modules/nth-check/lib/esm/index.js +63 -0
  424. package/node_modules/nth-check/lib/esm/index.js.map +1 -0
  425. package/node_modules/nth-check/lib/esm/package.json +1 -0
  426. package/node_modules/nth-check/lib/esm/parse.d.ts +9 -0
  427. package/node_modules/nth-check/lib/esm/parse.d.ts.map +1 -0
  428. package/node_modules/nth-check/lib/esm/parse.js +73 -0
  429. package/node_modules/nth-check/lib/esm/parse.js.map +1 -0
  430. package/node_modules/nth-check/lib/index.d.ts +59 -0
  431. package/node_modules/nth-check/lib/index.d.ts.map +1 -0
  432. package/node_modules/nth-check/lib/index.js +70 -0
  433. package/node_modules/nth-check/lib/index.js.map +1 -0
  434. package/node_modules/nth-check/lib/parse.d.ts +9 -0
  435. package/node_modules/nth-check/lib/parse.d.ts.map +1 -0
  436. package/node_modules/nth-check/lib/parse.js +77 -0
  437. package/node_modules/nth-check/lib/parse.js.map +1 -0
  438. package/node_modules/nth-check/package.json +78 -0
  439. package/package.json +154 -0
@@ -0,0 +1,2477 @@
1
+ {
2
+ "Description": "This stack includes the application's resources for integration testing.",
3
+ "Resources": {
4
+ "IntegVSCodeServerpasswordsecret202A5DB3": {
5
+ "Type": "AWS::SecretsManager::Secret",
6
+ "Properties": {
7
+ "GenerateSecretString": {
8
+ "ExcludePunctuation": true,
9
+ "GenerateStringKey": "password",
10
+ "IncludeSpace": false,
11
+ "PasswordLength": 16,
12
+ "SecretStringTemplate": "{\"username\":\"participant\"}"
13
+ }
14
+ },
15
+ "UpdateReplacePolicy": "Delete",
16
+ "DeletionPolicy": "Delete",
17
+ "Metadata": {
18
+ "cdk_nag": {
19
+ "rules_to_suppress": [
20
+ {
21
+ "reason": "For this tmp vc code server we do not need password rotation",
22
+ "id": "AwsSolutions-SMG4"
23
+ }
24
+ ]
25
+ }
26
+ }
27
+ },
28
+ "IntegVSCodeServerSecretRetrieverOnEventHandlerServiceRoleBEF8D4D2": {
29
+ "Type": "AWS::IAM::Role",
30
+ "Properties": {
31
+ "AssumeRolePolicyDocument": {
32
+ "Statement": [
33
+ {
34
+ "Action": "sts:AssumeRole",
35
+ "Effect": "Allow",
36
+ "Principal": {
37
+ "Service": "lambda.amazonaws.com"
38
+ }
39
+ }
40
+ ],
41
+ "Version": "2012-10-17"
42
+ },
43
+ "ManagedPolicyArns": [
44
+ {
45
+ "Fn::Join": [
46
+ "",
47
+ [
48
+ "arn:",
49
+ {
50
+ "Ref": "AWS::Partition"
51
+ },
52
+ ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"
53
+ ]
54
+ ]
55
+ }
56
+ ]
57
+ },
58
+ "Metadata": {
59
+ "cdk_nag": {
60
+ "rules_to_suppress": [
61
+ {
62
+ "reason": "For this event handler we do not need to restrict managed policies",
63
+ "id": "AwsSolutions-IAM4"
64
+ },
65
+ {
66
+ "reason": "For this lambda the latest runtime is not needed",
67
+ "id": "AwsSolutions-L1"
68
+ }
69
+ ]
70
+ }
71
+ }
72
+ },
73
+ "IntegVSCodeServerSecretRetrieverOnEventHandlerServiceRoleDefaultPolicy2641E2C6": {
74
+ "Type": "AWS::IAM::Policy",
75
+ "Properties": {
76
+ "PolicyDocument": {
77
+ "Statement": [
78
+ {
79
+ "Action": "secretsmanager:GetSecretValue",
80
+ "Effect": "Allow",
81
+ "Resource": {
82
+ "Ref": "IntegVSCodeServerpasswordsecret202A5DB3"
83
+ }
84
+ }
85
+ ],
86
+ "Version": "2012-10-17"
87
+ },
88
+ "PolicyName": "IntegVSCodeServerSecretRetrieverOnEventHandlerServiceRoleDefaultPolicy2641E2C6",
89
+ "Roles": [
90
+ {
91
+ "Ref": "IntegVSCodeServerSecretRetrieverOnEventHandlerServiceRoleBEF8D4D2"
92
+ }
93
+ ]
94
+ }
95
+ },
96
+ "IntegVSCodeServerSecretRetrieverOnEventHandlerDD084AE3": {
97
+ "Type": "AWS::Lambda::Function",
98
+ "Properties": {
99
+ "Code": {
100
+ "S3Bucket": {
101
+ "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"
102
+ },
103
+ "S3Key": "781ab0ab74634cdaf61539ab208ab777829ef07097ac21f95b9e15a3b1eedc1b.zip"
104
+ },
105
+ "Description": "src/secret-retriever/secret-retriever.lambda.ts",
106
+ "Environment": {
107
+ "Variables": {
108
+ "AWS_NODEJS_CONNECTION_REUSE_ENABLED": "1"
109
+ }
110
+ },
111
+ "Handler": "index.handler",
112
+ "MemorySize": 128,
113
+ "Role": {
114
+ "Fn::GetAtt": [
115
+ "IntegVSCodeServerSecretRetrieverOnEventHandlerServiceRoleBEF8D4D2",
116
+ "Arn"
117
+ ]
118
+ },
119
+ "Runtime": "nodejs18.x",
120
+ "Timeout": 10
121
+ },
122
+ "DependsOn": [
123
+ "IntegVSCodeServerSecretRetrieverOnEventHandlerServiceRoleDefaultPolicy2641E2C6",
124
+ "IntegVSCodeServerSecretRetrieverOnEventHandlerServiceRoleBEF8D4D2"
125
+ ],
126
+ "Metadata": {
127
+ "cdk_nag": {
128
+ "rules_to_suppress": [
129
+ {
130
+ "reason": "For this event handler we do not need to restrict managed policies",
131
+ "id": "AwsSolutions-IAM4"
132
+ },
133
+ {
134
+ "reason": "For this lambda the latest runtime is not needed",
135
+ "id": "AwsSolutions-L1"
136
+ }
137
+ ]
138
+ }
139
+ }
140
+ },
141
+ "IntegVSCodeServerSecretRetrieveProviderframeworkonEventServiceRole0F156B64": {
142
+ "Type": "AWS::IAM::Role",
143
+ "Properties": {
144
+ "AssumeRolePolicyDocument": {
145
+ "Statement": [
146
+ {
147
+ "Action": "sts:AssumeRole",
148
+ "Effect": "Allow",
149
+ "Principal": {
150
+ "Service": "lambda.amazonaws.com"
151
+ }
152
+ }
153
+ ],
154
+ "Version": "2012-10-17"
155
+ },
156
+ "ManagedPolicyArns": [
157
+ {
158
+ "Fn::Join": [
159
+ "",
160
+ [
161
+ "arn:",
162
+ {
163
+ "Ref": "AWS::Partition"
164
+ },
165
+ ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"
166
+ ]
167
+ ]
168
+ }
169
+ ]
170
+ },
171
+ "Metadata": {
172
+ "cdk_nag": {
173
+ "rules_to_suppress": [
174
+ {
175
+ "reason": "For this provider we do not need to restrict managed policies",
176
+ "id": "AwsSolutions-IAM4"
177
+ },
178
+ {
179
+ "reason": "For this provider wildcards are fine",
180
+ "id": "AwsSolutions-IAM5"
181
+ },
182
+ {
183
+ "reason": "For this provider the latest runtime is not needed",
184
+ "id": "AwsSolutions-L1"
185
+ }
186
+ ]
187
+ }
188
+ }
189
+ },
190
+ "IntegVSCodeServerSecretRetrieveProviderframeworkonEventServiceRoleDefaultPolicyEC4DCEA0": {
191
+ "Type": "AWS::IAM::Policy",
192
+ "Properties": {
193
+ "PolicyDocument": {
194
+ "Statement": [
195
+ {
196
+ "Action": "lambda:InvokeFunction",
197
+ "Effect": "Allow",
198
+ "Resource": [
199
+ {
200
+ "Fn::GetAtt": [
201
+ "IntegVSCodeServerSecretRetrieverOnEventHandlerDD084AE3",
202
+ "Arn"
203
+ ]
204
+ },
205
+ {
206
+ "Fn::Join": [
207
+ "",
208
+ [
209
+ {
210
+ "Fn::GetAtt": [
211
+ "IntegVSCodeServerSecretRetrieverOnEventHandlerDD084AE3",
212
+ "Arn"
213
+ ]
214
+ },
215
+ ":*"
216
+ ]
217
+ ]
218
+ }
219
+ ]
220
+ }
221
+ ],
222
+ "Version": "2012-10-17"
223
+ },
224
+ "PolicyName": "IntegVSCodeServerSecretRetrieveProviderframeworkonEventServiceRoleDefaultPolicyEC4DCEA0",
225
+ "Roles": [
226
+ {
227
+ "Ref": "IntegVSCodeServerSecretRetrieveProviderframeworkonEventServiceRole0F156B64"
228
+ }
229
+ ]
230
+ },
231
+ "Metadata": {
232
+ "cdk_nag": {
233
+ "rules_to_suppress": [
234
+ {
235
+ "reason": "For this provider we do not need to restrict managed policies",
236
+ "id": "AwsSolutions-IAM4"
237
+ },
238
+ {
239
+ "reason": "For this provider wildcards are fine",
240
+ "id": "AwsSolutions-IAM5"
241
+ },
242
+ {
243
+ "reason": "For this provider the latest runtime is not needed",
244
+ "id": "AwsSolutions-L1"
245
+ }
246
+ ]
247
+ }
248
+ }
249
+ },
250
+ "IntegVSCodeServerSecretRetrieveProviderframeworkonEventCF035CA3": {
251
+ "Type": "AWS::Lambda::Function",
252
+ "Properties": {
253
+ "Code": {
254
+ "S3Bucket": {
255
+ "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"
256
+ },
257
+ "S3Key": "4dc48ffba382f93077a1e6824599bbd4ceb6f91eb3d9442eca3b85bdb1a20b1e.zip"
258
+ },
259
+ "Description": "AWS CDK resource provider framework - onEvent (IntegTestStackUbuntu22/IntegVSCodeServer/SecretRetrieveProvider)",
260
+ "Environment": {
261
+ "Variables": {
262
+ "USER_ON_EVENT_FUNCTION_ARN": {
263
+ "Fn::GetAtt": [
264
+ "IntegVSCodeServerSecretRetrieverOnEventHandlerDD084AE3",
265
+ "Arn"
266
+ ]
267
+ }
268
+ }
269
+ },
270
+ "Handler": "framework.onEvent",
271
+ "Role": {
272
+ "Fn::GetAtt": [
273
+ "IntegVSCodeServerSecretRetrieveProviderframeworkonEventServiceRole0F156B64",
274
+ "Arn"
275
+ ]
276
+ },
277
+ "Runtime": {
278
+ "Fn::FindInMap": [
279
+ "LatestNodeRuntimeMap",
280
+ {
281
+ "Ref": "AWS::Region"
282
+ },
283
+ "value"
284
+ ]
285
+ },
286
+ "Timeout": 900
287
+ },
288
+ "DependsOn": [
289
+ "IntegVSCodeServerSecretRetrieveProviderframeworkonEventServiceRoleDefaultPolicyEC4DCEA0",
290
+ "IntegVSCodeServerSecretRetrieveProviderframeworkonEventServiceRole0F156B64"
291
+ ],
292
+ "Metadata": {
293
+ "cdk_nag": {
294
+ "rules_to_suppress": [
295
+ {
296
+ "reason": "For this provider we do not need to restrict managed policies",
297
+ "id": "AwsSolutions-IAM4"
298
+ },
299
+ {
300
+ "reason": "For this provider wildcards are fine",
301
+ "id": "AwsSolutions-IAM5"
302
+ },
303
+ {
304
+ "reason": "For this provider the latest runtime is not needed",
305
+ "id": "AwsSolutions-L1"
306
+ }
307
+ ]
308
+ }
309
+ }
310
+ },
311
+ "IntegVSCodeServerSecretRetrieverCustomResource2F3DB8BD": {
312
+ "Type": "AWS::CloudFormation::CustomResource",
313
+ "Properties": {
314
+ "ServiceToken": {
315
+ "Fn::GetAtt": [
316
+ "IntegVSCodeServerSecretRetrieveProviderframeworkonEventCF035CA3",
317
+ "Arn"
318
+ ]
319
+ },
320
+ "SecretArn": {
321
+ "Ref": "IntegVSCodeServerpasswordsecret202A5DB3"
322
+ },
323
+ "ServiceTimeout": 305
324
+ },
325
+ "UpdateReplacePolicy": "Delete",
326
+ "DeletionPolicy": "Delete"
327
+ },
328
+ "IntegVSCodeServervpc93DDE887": {
329
+ "Type": "AWS::EC2::VPC",
330
+ "Properties": {
331
+ "CidrBlock": "10.0.0.0/16",
332
+ "EnableDnsHostnames": true,
333
+ "EnableDnsSupport": true,
334
+ "InstanceTenancy": "default",
335
+ "Tags": [
336
+ {
337
+ "Key": "Name",
338
+ "Value": "IntegTestStackUbuntu22/IntegVSCodeServer/vpc"
339
+ }
340
+ ]
341
+ },
342
+ "Metadata": {
343
+ "cdk_nag": {
344
+ "rules_to_suppress": [
345
+ {
346
+ "reason": "For this tmp vpc we do not need flow logs",
347
+ "id": "AwsSolutions-VPC7"
348
+ }
349
+ ]
350
+ }
351
+ }
352
+ },
353
+ "IntegVSCodeServervpcpublicSubnet1Subnet928029A1": {
354
+ "Type": "AWS::EC2::Subnet",
355
+ "Properties": {
356
+ "AvailabilityZone": {
357
+ "Fn::Select": [
358
+ 0,
359
+ {
360
+ "Fn::GetAZs": ""
361
+ }
362
+ ]
363
+ },
364
+ "CidrBlock": "10.0.0.0/17",
365
+ "MapPublicIpOnLaunch": true,
366
+ "Tags": [
367
+ {
368
+ "Key": "aws-cdk:subnet-name",
369
+ "Value": "public"
370
+ },
371
+ {
372
+ "Key": "aws-cdk:subnet-type",
373
+ "Value": "Public"
374
+ },
375
+ {
376
+ "Key": "Name",
377
+ "Value": "IntegTestStackUbuntu22/IntegVSCodeServer/vpc/publicSubnet1"
378
+ }
379
+ ],
380
+ "VpcId": {
381
+ "Ref": "IntegVSCodeServervpc93DDE887"
382
+ }
383
+ },
384
+ "Metadata": {
385
+ "cdk_nag": {
386
+ "rules_to_suppress": [
387
+ {
388
+ "reason": "For this tmp vpc we do not need flow logs",
389
+ "id": "AwsSolutions-VPC7"
390
+ }
391
+ ]
392
+ }
393
+ }
394
+ },
395
+ "IntegVSCodeServervpcpublicSubnet1RouteTableFD418D0B": {
396
+ "Type": "AWS::EC2::RouteTable",
397
+ "Properties": {
398
+ "Tags": [
399
+ {
400
+ "Key": "Name",
401
+ "Value": "IntegTestStackUbuntu22/IntegVSCodeServer/vpc/publicSubnet1"
402
+ }
403
+ ],
404
+ "VpcId": {
405
+ "Ref": "IntegVSCodeServervpc93DDE887"
406
+ }
407
+ },
408
+ "Metadata": {
409
+ "cdk_nag": {
410
+ "rules_to_suppress": [
411
+ {
412
+ "reason": "For this tmp vpc we do not need flow logs",
413
+ "id": "AwsSolutions-VPC7"
414
+ }
415
+ ]
416
+ }
417
+ }
418
+ },
419
+ "IntegVSCodeServervpcpublicSubnet1RouteTableAssociation599AB80D": {
420
+ "Type": "AWS::EC2::SubnetRouteTableAssociation",
421
+ "Properties": {
422
+ "RouteTableId": {
423
+ "Ref": "IntegVSCodeServervpcpublicSubnet1RouteTableFD418D0B"
424
+ },
425
+ "SubnetId": {
426
+ "Ref": "IntegVSCodeServervpcpublicSubnet1Subnet928029A1"
427
+ }
428
+ },
429
+ "Metadata": {
430
+ "cdk_nag": {
431
+ "rules_to_suppress": [
432
+ {
433
+ "reason": "For this tmp vpc we do not need flow logs",
434
+ "id": "AwsSolutions-VPC7"
435
+ }
436
+ ]
437
+ }
438
+ }
439
+ },
440
+ "IntegVSCodeServervpcpublicSubnet1DefaultRoute36845B30": {
441
+ "Type": "AWS::EC2::Route",
442
+ "Properties": {
443
+ "DestinationCidrBlock": "0.0.0.0/0",
444
+ "GatewayId": {
445
+ "Ref": "IntegVSCodeServervpcIGW960F6D83"
446
+ },
447
+ "RouteTableId": {
448
+ "Ref": "IntegVSCodeServervpcpublicSubnet1RouteTableFD418D0B"
449
+ }
450
+ },
451
+ "DependsOn": [
452
+ "IntegVSCodeServervpcVPCGWA7CDED90"
453
+ ],
454
+ "Metadata": {
455
+ "cdk_nag": {
456
+ "rules_to_suppress": [
457
+ {
458
+ "reason": "For this tmp vpc we do not need flow logs",
459
+ "id": "AwsSolutions-VPC7"
460
+ }
461
+ ]
462
+ }
463
+ }
464
+ },
465
+ "IntegVSCodeServervpcpublicSubnet2SubnetE381654D": {
466
+ "Type": "AWS::EC2::Subnet",
467
+ "Properties": {
468
+ "AvailabilityZone": {
469
+ "Fn::Select": [
470
+ 1,
471
+ {
472
+ "Fn::GetAZs": ""
473
+ }
474
+ ]
475
+ },
476
+ "CidrBlock": "10.0.128.0/17",
477
+ "MapPublicIpOnLaunch": true,
478
+ "Tags": [
479
+ {
480
+ "Key": "aws-cdk:subnet-name",
481
+ "Value": "public"
482
+ },
483
+ {
484
+ "Key": "aws-cdk:subnet-type",
485
+ "Value": "Public"
486
+ },
487
+ {
488
+ "Key": "Name",
489
+ "Value": "IntegTestStackUbuntu22/IntegVSCodeServer/vpc/publicSubnet2"
490
+ }
491
+ ],
492
+ "VpcId": {
493
+ "Ref": "IntegVSCodeServervpc93DDE887"
494
+ }
495
+ },
496
+ "Metadata": {
497
+ "cdk_nag": {
498
+ "rules_to_suppress": [
499
+ {
500
+ "reason": "For this tmp vpc we do not need flow logs",
501
+ "id": "AwsSolutions-VPC7"
502
+ }
503
+ ]
504
+ }
505
+ }
506
+ },
507
+ "IntegVSCodeServervpcpublicSubnet2RouteTableC264EFB4": {
508
+ "Type": "AWS::EC2::RouteTable",
509
+ "Properties": {
510
+ "Tags": [
511
+ {
512
+ "Key": "Name",
513
+ "Value": "IntegTestStackUbuntu22/IntegVSCodeServer/vpc/publicSubnet2"
514
+ }
515
+ ],
516
+ "VpcId": {
517
+ "Ref": "IntegVSCodeServervpc93DDE887"
518
+ }
519
+ },
520
+ "Metadata": {
521
+ "cdk_nag": {
522
+ "rules_to_suppress": [
523
+ {
524
+ "reason": "For this tmp vpc we do not need flow logs",
525
+ "id": "AwsSolutions-VPC7"
526
+ }
527
+ ]
528
+ }
529
+ }
530
+ },
531
+ "IntegVSCodeServervpcpublicSubnet2RouteTableAssociationC62A1999": {
532
+ "Type": "AWS::EC2::SubnetRouteTableAssociation",
533
+ "Properties": {
534
+ "RouteTableId": {
535
+ "Ref": "IntegVSCodeServervpcpublicSubnet2RouteTableC264EFB4"
536
+ },
537
+ "SubnetId": {
538
+ "Ref": "IntegVSCodeServervpcpublicSubnet2SubnetE381654D"
539
+ }
540
+ },
541
+ "Metadata": {
542
+ "cdk_nag": {
543
+ "rules_to_suppress": [
544
+ {
545
+ "reason": "For this tmp vpc we do not need flow logs",
546
+ "id": "AwsSolutions-VPC7"
547
+ }
548
+ ]
549
+ }
550
+ }
551
+ },
552
+ "IntegVSCodeServervpcpublicSubnet2DefaultRouteEAD8BC23": {
553
+ "Type": "AWS::EC2::Route",
554
+ "Properties": {
555
+ "DestinationCidrBlock": "0.0.0.0/0",
556
+ "GatewayId": {
557
+ "Ref": "IntegVSCodeServervpcIGW960F6D83"
558
+ },
559
+ "RouteTableId": {
560
+ "Ref": "IntegVSCodeServervpcpublicSubnet2RouteTableC264EFB4"
561
+ }
562
+ },
563
+ "DependsOn": [
564
+ "IntegVSCodeServervpcVPCGWA7CDED90"
565
+ ],
566
+ "Metadata": {
567
+ "cdk_nag": {
568
+ "rules_to_suppress": [
569
+ {
570
+ "reason": "For this tmp vpc we do not need flow logs",
571
+ "id": "AwsSolutions-VPC7"
572
+ }
573
+ ]
574
+ }
575
+ }
576
+ },
577
+ "IntegVSCodeServervpcIGW960F6D83": {
578
+ "Type": "AWS::EC2::InternetGateway",
579
+ "Properties": {
580
+ "Tags": [
581
+ {
582
+ "Key": "Name",
583
+ "Value": "IntegTestStackUbuntu22/IntegVSCodeServer/vpc"
584
+ }
585
+ ]
586
+ },
587
+ "Metadata": {
588
+ "cdk_nag": {
589
+ "rules_to_suppress": [
590
+ {
591
+ "reason": "For this tmp vpc we do not need flow logs",
592
+ "id": "AwsSolutions-VPC7"
593
+ }
594
+ ]
595
+ }
596
+ }
597
+ },
598
+ "IntegVSCodeServervpcVPCGWA7CDED90": {
599
+ "Type": "AWS::EC2::VPCGatewayAttachment",
600
+ "Properties": {
601
+ "InternetGatewayId": {
602
+ "Ref": "IntegVSCodeServervpcIGW960F6D83"
603
+ },
604
+ "VpcId": {
605
+ "Ref": "IntegVSCodeServervpc93DDE887"
606
+ }
607
+ },
608
+ "Metadata": {
609
+ "cdk_nag": {
610
+ "rules_to_suppress": [
611
+ {
612
+ "reason": "For this tmp vpc we do not need flow logs",
613
+ "id": "AwsSolutions-VPC7"
614
+ }
615
+ ]
616
+ }
617
+ }
618
+ },
619
+ "IntegVSCodeServervpcRestrictDefaultSecurityGroupCustomResourceF6EA8ED1": {
620
+ "Type": "Custom::VpcRestrictDefaultSG",
621
+ "Properties": {
622
+ "ServiceToken": {
623
+ "Fn::GetAtt": [
624
+ "CustomVpcRestrictDefaultSGCustomResourceProviderHandlerDC833E5E",
625
+ "Arn"
626
+ ]
627
+ },
628
+ "DefaultSecurityGroupId": {
629
+ "Fn::GetAtt": [
630
+ "IntegVSCodeServervpc93DDE887",
631
+ "DefaultSecurityGroup"
632
+ ]
633
+ },
634
+ "Account": {
635
+ "Ref": "AWS::AccountId"
636
+ }
637
+ },
638
+ "UpdateReplacePolicy": "Delete",
639
+ "DeletionPolicy": "Delete",
640
+ "Metadata": {
641
+ "cdk_nag": {
642
+ "rules_to_suppress": [
643
+ {
644
+ "reason": "For this tmp vpc we do not need flow logs",
645
+ "id": "AwsSolutions-VPC7"
646
+ }
647
+ ]
648
+ }
649
+ }
650
+ },
651
+ "IntegVSCodeServercftoserversgFFE586B0": {
652
+ "Type": "AWS::EC2::SecurityGroup",
653
+ "Properties": {
654
+ "GroupDescription": "SG for VSCodeServer - only allow CloudFront ingress",
655
+ "GroupName": "cloudfront-to-vscode-server",
656
+ "SecurityGroupEgress": [
657
+ {
658
+ "CidrIp": "0.0.0.0/0",
659
+ "Description": "Allow all outbound traffic by default",
660
+ "IpProtocol": "-1"
661
+ }
662
+ ],
663
+ "VpcId": {
664
+ "Ref": "IntegVSCodeServervpc93DDE887"
665
+ }
666
+ }
667
+ },
668
+ "IntegVSCodeServercftoserversgfromIndirectPeer80C4F51713": {
669
+ "Type": "AWS::EC2::SecurityGroupIngress",
670
+ "Properties": {
671
+ "Description": "Allow HTTP from com.amazonaws.global.cloudfront.origin-facing",
672
+ "FromPort": 80,
673
+ "GroupId": {
674
+ "Fn::GetAtt": [
675
+ "IntegVSCodeServercftoserversgFFE586B0",
676
+ "GroupId"
677
+ ]
678
+ },
679
+ "IpProtocol": "tcp",
680
+ "SourcePrefixListId": {
681
+ "Fn::GetAtt": [
682
+ "IntegVSCodeServercfprefixlistIdGetPrefixListIdF0821FFC",
683
+ "PrefixLists.0.PrefixListId"
684
+ ]
685
+ },
686
+ "ToPort": 80
687
+ }
688
+ },
689
+ "IntegVSCodeServercfprefixlistIdGetPrefixListIdLogGroup171C2803": {
690
+ "Type": "AWS::Logs::LogGroup",
691
+ "Properties": {
692
+ "RetentionInDays": 1
693
+ },
694
+ "UpdateReplacePolicy": "Delete",
695
+ "DeletionPolicy": "Delete",
696
+ "Metadata": {
697
+ "cdk_nag": {
698
+ "rules_to_suppress": [
699
+ {
700
+ "reason": "For this provider wildcards are fine",
701
+ "id": "AwsSolutions-IAM5"
702
+ }
703
+ ]
704
+ }
705
+ }
706
+ },
707
+ "IntegVSCodeServercfprefixlistIdGetPrefixListIdRole1302B3E1": {
708
+ "Type": "AWS::IAM::Role",
709
+ "Properties": {
710
+ "AssumeRolePolicyDocument": {
711
+ "Statement": [
712
+ {
713
+ "Action": "sts:AssumeRole",
714
+ "Effect": "Allow",
715
+ "Principal": {
716
+ "Service": "lambda.amazonaws.com"
717
+ }
718
+ }
719
+ ],
720
+ "Version": "2012-10-17"
721
+ }
722
+ },
723
+ "Metadata": {
724
+ "cdk_nag": {
725
+ "rules_to_suppress": [
726
+ {
727
+ "reason": "For this provider wildcards are fine",
728
+ "id": "AwsSolutions-IAM5"
729
+ }
730
+ ]
731
+ }
732
+ }
733
+ },
734
+ "IntegVSCodeServercfprefixlistIdGetPrefixListIdF0821FFC": {
735
+ "Type": "Custom::AWS",
736
+ "Properties": {
737
+ "ServiceToken": {
738
+ "Fn::GetAtt": [
739
+ "AWS679f53fac002430cb0da5b7982bd22872D164C4C",
740
+ "Arn"
741
+ ]
742
+ },
743
+ "Create": "{\"service\":\"@aws-sdk/client-ec2\",\"action\":\"DescribeManagedPrefixListsCommand\",\"parameters\":{\"Filters\":[{\"Name\":\"prefix-list-name\",\"Values\":[\"com.amazonaws.global.cloudfront.origin-facing\"]}]},\"physicalResourceId\":{\"id\":\"cf-prefixlistId-c8a4f6cc7d07665f\"},\"logApiResponseData\":true}",
744
+ "Update": "{\"service\":\"@aws-sdk/client-ec2\",\"action\":\"DescribeManagedPrefixListsCommand\",\"parameters\":{\"Filters\":[{\"Name\":\"prefix-list-name\",\"Values\":[\"com.amazonaws.global.cloudfront.origin-facing\"]}]},\"physicalResourceId\":{\"id\":\"cf-prefixlistId-c8a4f6cc7d07665f\"},\"logApiResponseData\":true}",
745
+ "InstallLatestAwsSdk": "false"
746
+ },
747
+ "DependsOn": [
748
+ "IntegVSCodeServercfprefixlistIdGetPrefixListIdCustomResourcePolicyAB3F4958"
749
+ ],
750
+ "UpdateReplacePolicy": "Delete",
751
+ "DeletionPolicy": "Delete",
752
+ "Metadata": {
753
+ "cdk_nag": {
754
+ "rules_to_suppress": [
755
+ {
756
+ "reason": "For this provider wildcards are fine",
757
+ "id": "AwsSolutions-IAM5"
758
+ }
759
+ ]
760
+ }
761
+ }
762
+ },
763
+ "IntegVSCodeServercfprefixlistIdGetPrefixListIdCustomResourcePolicyAB3F4958": {
764
+ "Type": "AWS::IAM::Policy",
765
+ "Properties": {
766
+ "PolicyDocument": {
767
+ "Statement": [
768
+ {
769
+ "Action": "ec2:DescribeManagedPrefixLists",
770
+ "Effect": "Allow",
771
+ "Resource": "*"
772
+ }
773
+ ],
774
+ "Version": "2012-10-17"
775
+ },
776
+ "PolicyName": "IntegVSCodeServercfprefixlistIdGetPrefixListIdCustomResourcePolicyAB3F4958",
777
+ "Roles": [
778
+ {
779
+ "Ref": "IntegVSCodeServercfprefixlistIdGetPrefixListIdRole1302B3E1"
780
+ }
781
+ ]
782
+ },
783
+ "Metadata": {
784
+ "cdk_nag": {
785
+ "rules_to_suppress": [
786
+ {
787
+ "reason": "For this provider wildcards are fine",
788
+ "id": "AwsSolutions-IAM5"
789
+ }
790
+ ]
791
+ }
792
+ }
793
+ },
794
+ "IntegVSCodeServerserverinstancerole7745B5BB": {
795
+ "Type": "AWS::IAM::Role",
796
+ "Properties": {
797
+ "AssumeRolePolicyDocument": {
798
+ "Statement": [
799
+ {
800
+ "Action": "sts:AssumeRole",
801
+ "Effect": "Allow",
802
+ "Principal": {
803
+ "Service": [
804
+ "ec2.amazonaws.com",
805
+ "ssm.amazonaws.com"
806
+ ]
807
+ }
808
+ }
809
+ ],
810
+ "Version": "2012-10-17"
811
+ },
812
+ "ManagedPolicyArns": [
813
+ {
814
+ "Fn::Join": [
815
+ "",
816
+ [
817
+ "arn:",
818
+ {
819
+ "Ref": "AWS::Partition"
820
+ },
821
+ ":iam::aws:policy/AmazonSSMManagedInstanceCore"
822
+ ]
823
+ ]
824
+ },
825
+ {
826
+ "Fn::Join": [
827
+ "",
828
+ [
829
+ "arn:",
830
+ {
831
+ "Ref": "AWS::Partition"
832
+ },
833
+ ":iam::aws:policy/CloudWatchAgentServerPolicy"
834
+ ]
835
+ ]
836
+ },
837
+ {
838
+ "Fn::Join": [
839
+ "",
840
+ [
841
+ "arn:",
842
+ {
843
+ "Ref": "AWS::Partition"
844
+ },
845
+ ":iam::aws:policy/AmazonQDeveloperAccess"
846
+ ]
847
+ ]
848
+ },
849
+ {
850
+ "Fn::Join": [
851
+ "",
852
+ [
853
+ "arn:",
854
+ {
855
+ "Ref": "AWS::Partition"
856
+ },
857
+ ":iam::aws:policy/ReadOnlyAccess"
858
+ ]
859
+ ]
860
+ }
861
+ ],
862
+ "Policies": [
863
+ {
864
+ "PolicyDocument": {
865
+ "Statement": [
866
+ {
867
+ "Action": [
868
+ "iam:AddRoleToInstanceProfile",
869
+ "iam:AttachRolePolicy",
870
+ "iam:CreateRole",
871
+ "iam:CreateServiceLinkedRole",
872
+ "iam:DeleteRole",
873
+ "iam:DeleteRolePermissionsBoundary",
874
+ "iam:DeleteRolePolicy",
875
+ "iam:DeleteServiceLinkedRole",
876
+ "iam:DetachRolePolicy",
877
+ "iam:GetRole",
878
+ "iam:GetRolePolicy",
879
+ "iam:GetServiceLinkedRoleDeletionStatus",
880
+ "iam:ListAttachedRolePolicies",
881
+ "iam:ListInstanceProfilesForRole",
882
+ "iam:ListRolePolicies",
883
+ "iam:ListRoleTags",
884
+ "iam:ListRoles",
885
+ "iam:PutRolePermissionsBoundary",
886
+ "iam:PutRolePolicy",
887
+ "iam:RemoveRoleFromInstanceProfile",
888
+ "iam:TagRole",
889
+ "iam:UntagRole",
890
+ "iam:UpdateAssumeRolePolicy",
891
+ "iam:UpdateRole",
892
+ "iam:UpdateRoleDescription",
893
+ "sts:AssumeRole"
894
+ ],
895
+ "Effect": "Allow",
896
+ "Resource": {
897
+ "Fn::Join": [
898
+ "",
899
+ [
900
+ "arn:aws:iam::",
901
+ {
902
+ "Ref": "AWS::AccountId"
903
+ },
904
+ ":role/cdk-*"
905
+ ]
906
+ ]
907
+ },
908
+ "Sid": "StsAccess"
909
+ },
910
+ {
911
+ "Action": "iam:PassRole",
912
+ "Condition": {
913
+ "StringLike": {
914
+ "iam:PassedToService": "cloudformation.amazonaws.com"
915
+ }
916
+ },
917
+ "Effect": "Allow",
918
+ "Resource": {
919
+ "Fn::Join": [
920
+ "",
921
+ [
922
+ "arn:aws:iam::",
923
+ {
924
+ "Ref": "AWS::AccountId"
925
+ },
926
+ ":role/cdk-*"
927
+ ]
928
+ ]
929
+ }
930
+ },
931
+ {
932
+ "Action": "cloudformation:*",
933
+ "Effect": "Allow",
934
+ "Resource": {
935
+ "Fn::Join": [
936
+ "",
937
+ [
938
+ "arn:aws:cloudformation:*:",
939
+ {
940
+ "Ref": "AWS::AccountId"
941
+ },
942
+ ":stack/CDKToolkit/*"
943
+ ]
944
+ ]
945
+ }
946
+ },
947
+ {
948
+ "Action": [
949
+ "cloudformation:CreateChangeSet",
950
+ "cloudformation:DeleteChangeSet",
951
+ "cloudformation:ExecuteChangeSet",
952
+ "ec2:DescribeInstances",
953
+ "ec2:DescribeVolumesModifications*",
954
+ "ec2:ModifyVolume"
955
+ ],
956
+ "Effect": "Allow",
957
+ "Resource": "*"
958
+ },
959
+ {
960
+ "Action": "s3:*",
961
+ "Effect": "Allow",
962
+ "Resource": "*",
963
+ "Sid": "S3Access"
964
+ },
965
+ {
966
+ "Action": [
967
+ "ecr:CreateRepository",
968
+ "ecr:DeleteRepository",
969
+ "ecr:DescribeRepositories",
970
+ "ecr:GetLifecyclePolicy",
971
+ "ecr:PutImageScanningConfiguration",
972
+ "ecr:PutLifecyclePolicy",
973
+ "ecr:SetRepositoryPolicy"
974
+ ],
975
+ "Effect": "Allow",
976
+ "Resource": {
977
+ "Fn::Join": [
978
+ "",
979
+ [
980
+ "arn:aws:ecr:*:",
981
+ {
982
+ "Ref": "AWS::AccountId"
983
+ },
984
+ ":repository/cdk-*"
985
+ ]
986
+ ]
987
+ },
988
+ "Sid": "ECRAccess"
989
+ },
990
+ {
991
+ "Action": [
992
+ "ssm:DeleteParameter*",
993
+ "ssm:GetParameter*",
994
+ "ssm:PutParameter*"
995
+ ],
996
+ "Effect": "Allow",
997
+ "Resource": {
998
+ "Fn::Join": [
999
+ "",
1000
+ [
1001
+ "arn:aws:ssm:*:",
1002
+ {
1003
+ "Ref": "AWS::AccountId"
1004
+ },
1005
+ ":parameter/cdk-bootstrap/*"
1006
+ ]
1007
+ ]
1008
+ }
1009
+ },
1010
+ {
1011
+ "Action": [
1012
+ "codepipeline:DisableStageTransition",
1013
+ "codepipeline:EnableStageTransition",
1014
+ "codepipeline:StartPipelineExecution",
1015
+ "codepipeline:StopPipelineExecution",
1016
+ "codepipeline:UpdatePipeline"
1017
+ ],
1018
+ "Effect": "Allow",
1019
+ "Resource": {
1020
+ "Fn::Join": [
1021
+ "",
1022
+ [
1023
+ "arn:aws:codepipeline:*:",
1024
+ {
1025
+ "Ref": "AWS::AccountId"
1026
+ },
1027
+ ":*/*"
1028
+ ]
1029
+ ]
1030
+ }
1031
+ },
1032
+ {
1033
+ "Action": "kms:Decrypt",
1034
+ "Effect": "Allow",
1035
+ "Resource": {
1036
+ "Fn::Join": [
1037
+ "",
1038
+ [
1039
+ "arn:aws:kms:*:",
1040
+ {
1041
+ "Ref": "AWS::AccountId"
1042
+ },
1043
+ ":key/*"
1044
+ ]
1045
+ ]
1046
+ }
1047
+ }
1048
+ ],
1049
+ "Version": "2012-10-17"
1050
+ },
1051
+ "PolicyName": "VSCodeInstanceInlinePolicy"
1052
+ }
1053
+ ]
1054
+ },
1055
+ "Metadata": {
1056
+ "cdk_nag": {
1057
+ "rules_to_suppress": [
1058
+ {
1059
+ "reason": "For this tmp role we do not need to restrict managed policies",
1060
+ "id": "AwsSolutions-IAM4"
1061
+ },
1062
+ {
1063
+ "reason": "For this tmp role the wildcards are fine",
1064
+ "id": "AwsSolutions-IAM5"
1065
+ }
1066
+ ]
1067
+ }
1068
+ }
1069
+ },
1070
+ "IntegVSCodeServerserverinstanceInstanceProfile6130979E": {
1071
+ "Type": "AWS::IAM::InstanceProfile",
1072
+ "Properties": {
1073
+ "Roles": [
1074
+ {
1075
+ "Ref": "IntegVSCodeServerserverinstancerole7745B5BB"
1076
+ }
1077
+ ]
1078
+ },
1079
+ "Metadata": {
1080
+ "cdk_nag": {
1081
+ "rules_to_suppress": [
1082
+ {
1083
+ "reason": "For this tmp instance we do not need an asg",
1084
+ "id": "AwsSolutions-EC29"
1085
+ }
1086
+ ]
1087
+ }
1088
+ }
1089
+ },
1090
+ "IntegVSCodeServerserverinstance0A3D62D7": {
1091
+ "Type": "AWS::EC2::Instance",
1092
+ "Properties": {
1093
+ "AvailabilityZone": {
1094
+ "Fn::Select": [
1095
+ 0,
1096
+ {
1097
+ "Fn::GetAZs": ""
1098
+ }
1099
+ ]
1100
+ },
1101
+ "BlockDeviceMappings": [
1102
+ {
1103
+ "DeviceName": "/dev/sda1",
1104
+ "Ebs": {
1105
+ "DeleteOnTermination": true,
1106
+ "Encrypted": true,
1107
+ "VolumeSize": 40,
1108
+ "VolumeType": "gp3"
1109
+ }
1110
+ }
1111
+ ],
1112
+ "IamInstanceProfile": {
1113
+ "Ref": "IntegVSCodeServerserverinstanceInstanceProfile6130979E"
1114
+ },
1115
+ "ImageId": {
1116
+ "Ref": "SsmParameterValueawsservicecanonicalubuntuserverjammystablecurrentarm64hvmebsgp2amiidC96584B6F00A464EAD1953AFF4B05118Parameter"
1117
+ },
1118
+ "InstanceType": "m7g.xlarge",
1119
+ "LaunchTemplate": {
1120
+ "LaunchTemplateName": "IntegTestStackUbuntu22IntegVSCodeServerserverinstanceLaunchTemplate777D49BA",
1121
+ "Version": {
1122
+ "Fn::GetAtt": [
1123
+ "IntegVSCodeServerserverinstanceLaunchTemplate43932ED3",
1124
+ "LatestVersionNumber"
1125
+ ]
1126
+ }
1127
+ },
1128
+ "Monitoring": true,
1129
+ "NetworkInterfaces": [
1130
+ {
1131
+ "AssociatePublicIpAddress": true,
1132
+ "DeviceIndex": "0",
1133
+ "GroupSet": [
1134
+ {
1135
+ "Fn::GetAtt": [
1136
+ "IntegVSCodeServercftoserversgFFE586B0",
1137
+ "GroupId"
1138
+ ]
1139
+ }
1140
+ ],
1141
+ "SubnetId": {
1142
+ "Ref": "IntegVSCodeServervpcpublicSubnet1Subnet928029A1"
1143
+ }
1144
+ }
1145
+ ],
1146
+ "Tags": [
1147
+ {
1148
+ "Key": "Name",
1149
+ "Value": "VSCodeServer"
1150
+ }
1151
+ ],
1152
+ "UserData": {
1153
+ "Fn::Base64": "\n #cloud-config\n hostname: VSCodeServer\n runcmd:\n - mkdir -p /Workshop && chown -R participant:participant /Workshop\n "
1154
+ }
1155
+ },
1156
+ "DependsOn": [
1157
+ "IntegVSCodeServerserverinstancerole7745B5BB",
1158
+ "IntegVSCodeServervpcpublicSubnet1DefaultRoute36845B30",
1159
+ "IntegVSCodeServervpcpublicSubnet1RouteTableAssociation599AB80D",
1160
+ "IntegVSCodeServervpcpublicSubnet2DefaultRouteEAD8BC23",
1161
+ "IntegVSCodeServervpcpublicSubnet2RouteTableAssociationC62A1999"
1162
+ ],
1163
+ "Metadata": {
1164
+ "cdk_nag": {
1165
+ "rules_to_suppress": [
1166
+ {
1167
+ "reason": "For this tmp instance we do not need an asg",
1168
+ "id": "AwsSolutions-EC29"
1169
+ }
1170
+ ]
1171
+ }
1172
+ }
1173
+ },
1174
+ "IntegVSCodeServerserverinstanceLaunchTemplate43932ED3": {
1175
+ "Type": "AWS::EC2::LaunchTemplate",
1176
+ "Properties": {
1177
+ "LaunchTemplateData": {
1178
+ "MetadataOptions": {
1179
+ "HttpTokens": "required"
1180
+ }
1181
+ },
1182
+ "LaunchTemplateName": "IntegTestStackUbuntu22IntegVSCodeServerserverinstanceLaunchTemplate777D49BA"
1183
+ }
1184
+ },
1185
+ "IntegVSCodeServercfcachepolicy8F5F1F69": {
1186
+ "Type": "AWS::CloudFront::CachePolicy",
1187
+ "Properties": {
1188
+ "CachePolicyConfig": {
1189
+ "Comment": "Cache policy for VSCodeServer",
1190
+ "DefaultTTL": 86400,
1191
+ "MaxTTL": 31536000,
1192
+ "MinTTL": 1,
1193
+ "Name": "cf-cache-policy-vscodeserver-IntegTestStackUbuntu22",
1194
+ "ParametersInCacheKeyAndForwardedToOrigin": {
1195
+ "CookiesConfig": {
1196
+ "CookieBehavior": "all"
1197
+ },
1198
+ "EnableAcceptEncodingBrotli": false,
1199
+ "EnableAcceptEncodingGzip": false,
1200
+ "HeadersConfig": {
1201
+ "HeaderBehavior": "whitelist",
1202
+ "Headers": [
1203
+ "Accept-Charset",
1204
+ "Authorization",
1205
+ "Origin",
1206
+ "Accept",
1207
+ "Referer",
1208
+ "Host",
1209
+ "Accept-Language",
1210
+ "Accept-Encoding",
1211
+ "Accept-Datetime"
1212
+ ]
1213
+ },
1214
+ "QueryStringsConfig": {
1215
+ "QueryStringBehavior": "all"
1216
+ }
1217
+ }
1218
+ }
1219
+ }
1220
+ },
1221
+ "IntegVSCodeServercfdistributionFDBE873F": {
1222
+ "Type": "AWS::CloudFront::Distribution",
1223
+ "Properties": {
1224
+ "DistributionConfig": {
1225
+ "CacheBehaviors": [
1226
+ {
1227
+ "AllowedMethods": [
1228
+ "GET",
1229
+ "HEAD",
1230
+ "OPTIONS",
1231
+ "PUT",
1232
+ "PATCH",
1233
+ "POST",
1234
+ "DELETE"
1235
+ ],
1236
+ "CachePolicyId": "4135ea2d-6df8-44a3-9df3-4b5a84be39ad",
1237
+ "Compress": false,
1238
+ "OriginRequestPolicyId": "216adef6-5c7f-47e4-b989-5492eafa07d3",
1239
+ "PathPattern": "/proxy/*",
1240
+ "TargetOriginId": "Cloudfront-IntegTestStackUbuntu22-IntegTestStackUbuntu22",
1241
+ "ViewerProtocolPolicy": "allow-all"
1242
+ }
1243
+ ],
1244
+ "Comment": "Distribution for VSCodeServer",
1245
+ "DefaultCacheBehavior": {
1246
+ "AllowedMethods": [
1247
+ "GET",
1248
+ "HEAD",
1249
+ "OPTIONS",
1250
+ "PUT",
1251
+ "PATCH",
1252
+ "POST",
1253
+ "DELETE"
1254
+ ],
1255
+ "CachePolicyId": {
1256
+ "Ref": "IntegVSCodeServercfcachepolicy8F5F1F69"
1257
+ },
1258
+ "Compress": true,
1259
+ "OriginRequestPolicyId": "216adef6-5c7f-47e4-b989-5492eafa07d3",
1260
+ "TargetOriginId": "Cloudfront-IntegTestStackUbuntu22-IntegTestStackUbuntu22",
1261
+ "ViewerProtocolPolicy": "allow-all"
1262
+ },
1263
+ "Enabled": true,
1264
+ "HttpVersion": "http2and3",
1265
+ "IPV6Enabled": true,
1266
+ "Origins": [
1267
+ {
1268
+ "CustomOriginConfig": {
1269
+ "OriginProtocolPolicy": "http-only",
1270
+ "OriginSSLProtocols": [
1271
+ "TLSv1.2"
1272
+ ]
1273
+ },
1274
+ "DomainName": {
1275
+ "Fn::GetAtt": [
1276
+ "IntegVSCodeServerserverinstance0A3D62D7",
1277
+ "PublicDnsName"
1278
+ ]
1279
+ },
1280
+ "Id": "Cloudfront-IntegTestStackUbuntu22-IntegTestStackUbuntu22"
1281
+ }
1282
+ ],
1283
+ "PriceClass": "PriceClass_All"
1284
+ }
1285
+ },
1286
+ "Metadata": {
1287
+ "cdk_nag": {
1288
+ "rules_to_suppress": [
1289
+ {
1290
+ "reason": "For this tmp distribution we do not need geo restrictions",
1291
+ "id": "AwsSolutions-CFR1"
1292
+ },
1293
+ {
1294
+ "reason": "For this tmp distribution we do not need waf integration",
1295
+ "id": "AwsSolutions-CFR2"
1296
+ },
1297
+ {
1298
+ "reason": "For this tmp distribution we do not need access logging enabled",
1299
+ "id": "AwsSolutions-CFR3"
1300
+ },
1301
+ {
1302
+ "reason": "For this tmp distribution we do not need limit SSL protocols as we use the default viewer cert",
1303
+ "id": "AwsSolutions-CFR4"
1304
+ },
1305
+ {
1306
+ "reason": "For this tmp distribution we do not need limit SSL protocols as we use the default viewer cert",
1307
+ "id": "AwsSolutions-CFR5"
1308
+ }
1309
+ ]
1310
+ }
1311
+ }
1312
+ },
1313
+ "IntegVSCodeServerssmdocumentubuntuED32BACB": {
1314
+ "Type": "AWS::SSM::Document",
1315
+ "Properties": {
1316
+ "Content": {
1317
+ "schemaVersion": "2.2",
1318
+ "description": "Bootstrap VSCode code-server instance",
1319
+ "parameters": {
1320
+ "VSCodePassword": {
1321
+ "type": "String",
1322
+ "default": {
1323
+ "Ref": "AWS::StackId"
1324
+ }
1325
+ },
1326
+ "NodeVersion": {
1327
+ "type": "String",
1328
+ "default": "20",
1329
+ "allowedValues": [
1330
+ "22",
1331
+ "20",
1332
+ "18"
1333
+ ]
1334
+ },
1335
+ "DotNetVersion": {
1336
+ "type": "String",
1337
+ "default": "8.0",
1338
+ "allowedValues": [
1339
+ "8.0",
1340
+ "7.0"
1341
+ ]
1342
+ }
1343
+ },
1344
+ "mainSteps": [
1345
+ {
1346
+ "action": "aws:configurePackage",
1347
+ "name": "InstallCloudWatchAgent",
1348
+ "inputs": {
1349
+ "name": "AmazonCloudWatchAgent",
1350
+ "action": "Install"
1351
+ }
1352
+ },
1353
+ {
1354
+ "action": "aws:runDocument",
1355
+ "name": "ConfigureCloudWatchAgent",
1356
+ "inputs": {
1357
+ "documentType": "SSMDocument",
1358
+ "documentPath": "AmazonCloudWatch-ManageAgent",
1359
+ "documentParameters": {
1360
+ "action": "configure",
1361
+ "mode": "ec2",
1362
+ "optionalConfigurationSource": "default",
1363
+ "optionalRestart": "yes"
1364
+ }
1365
+ }
1366
+ },
1367
+ {
1368
+ "action": "aws:runShellScript",
1369
+ "name": "InstallAptPackagesApt",
1370
+ "inputs": {
1371
+ "runCommand": [
1372
+ "#!/bin/bash",
1373
+ "apt-get -q update && DEBIAN_FRONTEND=noninteractive apt-get install -y -q apt-utils",
1374
+ "apt-get -q update && DEBIAN_FRONTEND=noninteractive apt-get install -y -q needrestart unattended-upgrades",
1375
+ "sed -i 's/#$nrconf{kernelhints} = -1;/$nrconf{kernelhints} = 0;/' /etc/needrestart/needrestart.conf",
1376
+ "sed -i 's/#$nrconf{verbosity} = 2;/$nrconf{verbosity} = 0;/' /etc/needrestart/needrestart.conf",
1377
+ "sed -i \"s/#$nrconf{restart} = 'i';/$nrconf{restart} = 'a';/\" /etc/needrestart/needrestart.conf",
1378
+ "echo \"Apt helper packages added. Checking configuration\"",
1379
+ "cat /etc/needrestart/needrestart.conf"
1380
+ ]
1381
+ }
1382
+ },
1383
+ {
1384
+ "action": "aws:runShellScript",
1385
+ "name": "InstallBasePackagesApt",
1386
+ "inputs": {
1387
+ "runCommand": [
1388
+ "#!/bin/bash",
1389
+ "apt-get -q update && DEBIAN_FRONTEND=noninteractive apt-get install -y -q curl gnupg whois argon2 openssl locales locales-all unzip apt-transport-https ca-certificates software-properties-common nginx"
1390
+ ]
1391
+ }
1392
+ },
1393
+ {
1394
+ "action": "aws:runShellScript",
1395
+ "name": "AddUserApt",
1396
+ "inputs": {
1397
+ "runCommand": [
1398
+ "#!/bin/bash",
1399
+ "echo 'Adding user: ${VSCodeUser}'",
1400
+ "adduser --disabled-password --gecos '' participant",
1401
+ "echo \"participant:{{ VSCodePassword }}\" | chpasswd",
1402
+ "usermod -aG sudo participant",
1403
+ "tee /etc/sudoers.d/91-vscode-user <<EOF\nparticipant ALL=(ALL) NOPASSWD:ALL\nEOF",
1404
+ "mkdir -p /home/participant && chown -R participant:participant /home/participant",
1405
+ "echo \"User added. Checking configuration\"",
1406
+ "getent passwd participant"
1407
+ ]
1408
+ }
1409
+ },
1410
+ {
1411
+ "action": "aws:runShellScript",
1412
+ "name": "InstallNodeApt",
1413
+ "inputs": {
1414
+ "runCommand": [
1415
+ "#!/bin/bash",
1416
+ "curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /usr/share/keyrings/nodesource.gpg",
1417
+ "echo \"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/nodesource.gpg] https://deb.nodesource.com/node_{{ NodeVersion }}.x nodistro main\" > /etc/apt/sources.list.d/nodesource.list",
1418
+ "apt-get -q update && DEBIAN_FRONTEND=noninteractive apt-get install -y -q nodejs",
1419
+ "npm install -g npm@latest",
1420
+ "echo \"Node and npm installed. Checking configuration\"",
1421
+ "node -v",
1422
+ "npm -v"
1423
+ ]
1424
+ }
1425
+ },
1426
+ {
1427
+ "action": "aws:runShellScript",
1428
+ "name": "InstallDockerApt",
1429
+ "inputs": {
1430
+ "runCommand": [
1431
+ "#!/bin/bash",
1432
+ "curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg",
1433
+ "echo \"deb [signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release --codename --short) stable\" > /etc/apt/sources.list.d/docker.list",
1434
+ "apt-get -q update && DEBIAN_FRONTEND=noninteractive apt-get install -y -q docker-ce docker-ce-cli containerd.io",
1435
+ "systemctl restart code-server@participant.service",
1436
+ "systemctl start docker.service",
1437
+ "echo \"Docker installed. Checking configuration\"",
1438
+ "docker --version",
1439
+ "systemctl status docker.service"
1440
+ ]
1441
+ }
1442
+ },
1443
+ {
1444
+ "action": "aws:runShellScript",
1445
+ "name": "InstallGitApt",
1446
+ "inputs": {
1447
+ "runCommand": [
1448
+ "#!/bin/bash",
1449
+ "add-apt-repository ppa:git-core/ppa",
1450
+ "apt-get -q update && DEBIAN_FRONTEND=noninteractive apt-get install -y -q git",
1451
+ "sudo -u participant git config --global user.email \"participant@example.com\"",
1452
+ "sudo -u participant git config --global user.name \"Workshop participant\"",
1453
+ "sudo -u participant git config --global init.defaultBranch \"main\"",
1454
+ "echo \"Git installed. Checking configuration\"",
1455
+ "git --version"
1456
+ ]
1457
+ }
1458
+ },
1459
+ {
1460
+ "action": "aws:runShellScript",
1461
+ "name": "InstallPythonApt",
1462
+ "inputs": {
1463
+ "runCommand": [
1464
+ "#!/bin/bash",
1465
+ "apt-get -q update && DEBIAN_FRONTEND=noninteractive apt-get install -y -q python3-pip python3-venv python3-boto3 python3-pytest",
1466
+ "echo 'alias pytest=pytest-3' >> /home/participant/.bashrc",
1467
+ "systemctl restart code-server@participant.service",
1468
+ "systemctl start multipathd.service packagekit.service",
1469
+ "systemctl restart unattended-upgrades.service",
1470
+ "echo \"Python and Pip installed. Checking configuration\"",
1471
+ "python3 --version",
1472
+ "pip3 --version"
1473
+ ]
1474
+ }
1475
+ },
1476
+ {
1477
+ "action": "aws:runShellScript",
1478
+ "name": "InstallAWSCLI",
1479
+ "inputs": {
1480
+ "runCommand": [
1481
+ "#!/bin/bash",
1482
+ "curl -fsSL https://awscli.amazonaws.com/awscli-exe-linux-$(uname -m).zip -o /tmp/aws-cli.zip",
1483
+ "unzip -q -d /tmp /tmp/aws-cli.zip",
1484
+ "sudo /tmp/aws/install",
1485
+ "rm -rf /tmp/aws",
1486
+ "echo \"AWS CLI installed. Checking configuration\"",
1487
+ "aws --version"
1488
+ ]
1489
+ }
1490
+ },
1491
+ {
1492
+ "action": "aws:runShellScript",
1493
+ "name": "ConfigureCodeServer",
1494
+ "inputs": {
1495
+ "runCommand": [
1496
+ "#!/bin/bash",
1497
+ "export HOME=/home/participant",
1498
+ "curl -fsSL https://code-server.dev/install.sh | bash -s -- 2>&1",
1499
+ "systemctl enable --now code-server@participant 2>&1",
1500
+ "tee /etc/nginx/conf.d/code-server.conf <<EOF\nserver {\n listen 80;\n listen [::]:80;\n # server_name distribution.distributionDomainName;\n server_name *.cloudfront.net;\n location / {\n proxy_pass http://localhost:8080/;\n proxy_set_header Host \\$host;\n proxy_set_header Upgrade \\$http_upgrade;\n proxy_set_header Connection upgrade;\n proxy_set_header Accept-Encoding gzip;\n }\n location /app {\n proxy_pass http://localhost:8081/app;\n proxy_set_header Host \\$host;\n proxy_set_header Upgrade \\$http_upgrade;\n proxy_set_header Connection upgrade;\n proxy_set_header Accept-Encoding gzip;\n }\n}\nEOF",
1501
+ "mkdir -p /home/participant/.config/code-server",
1502
+ "tee /home/participant/.config/code-server/config.yaml <<EOF\ncert: false\nauth: password\nhashed-password: \"$(echo -n {{ VSCodePassword }} | argon2 $(openssl rand -base64 12) -e)\"\nEOF",
1503
+ "mkdir -p /home/participant/.local/share/code-server/User/",
1504
+ "touch /home/participant/.hushlogin",
1505
+ "mkdir -p /Workshop && chown -R participant:participant /Workshop",
1506
+ "tee /home/participant/.local/share/code-server/User/settings.json <<EOF\n{\n \"extensions.autoUpdate\": false,\n \"extensions.autoCheckUpdates\": false,\n \"telemetry.telemetryLevel\": \"off\",\n \"security.workspace.trust.startupPrompt\": \"never\",\n \"security.workspace.trust.enabled\": false,\n \"security.workspace.trust.banner\": \"never\",\n \"security.workspace.trust.emptyWindow\": false,\n \"python.testing.pytestEnabled\": true,\n \"auto-run-command.rules\": [\n {\n \"command\": \"workbench.action.terminal.new\"\n }\n ]\n}\nEOF",
1507
+ "chown -R participant:participant /home/participant",
1508
+ "systemctl restart code-server@participant",
1509
+ "systemctl restart nginx",
1510
+ "sudo -u participant --login code-server --install-extension AmazonWebServices.aws-toolkit-vscode --force",
1511
+ "sudo -u participant --login code-server --install-extension AmazonWebServices.amazon-q-vscode --force",
1512
+ "sudo -u participant --login code-server --install-extension synedra.auto-run-command --force",
1513
+ "sudo -u participant --login code-server --install-extension vscjava.vscode-java-pack --force",
1514
+ "sudo -u participant --login code-server --install-extension ms-vscode.live-server --force",
1515
+ "chown -R participant:participant /home/participant",
1516
+ "echo \"Nginx installed. Checking configuration\"",
1517
+ "nginx -t 2>&1",
1518
+ "systemctl status nginx",
1519
+ "echo \"CodeServer installed. Checking configuration\"",
1520
+ "code-server -v",
1521
+ "systemctl status code-server@participant"
1522
+ ]
1523
+ }
1524
+ },
1525
+ {
1526
+ "action": "aws:runShellScript",
1527
+ "name": "UpdateProfile",
1528
+ "inputs": {
1529
+ "runCommand": [
1530
+ "#!/bin/bash",
1531
+ "echo LANG=en_US.utf-8 >> /etc/environment",
1532
+ "echo LC_ALL=en_US.UTF-8 >> /etc/environment",
1533
+ "echo 'PATH=$PATH:/home/participant/.local/bin' >> /home/participant/.bashrc",
1534
+ "echo 'export PATH' >> /home/participant/.bashrc",
1535
+ {
1536
+ "Fn::Join": [
1537
+ "",
1538
+ [
1539
+ "echo 'export AWS_REGION=",
1540
+ {
1541
+ "Ref": "AWS::Region"
1542
+ },
1543
+ "' >> /home/participant/.bashrc"
1544
+ ]
1545
+ ]
1546
+ },
1547
+ {
1548
+ "Fn::Join": [
1549
+ "",
1550
+ [
1551
+ "echo 'export AWS_ACCOUNTID=",
1552
+ {
1553
+ "Ref": "AWS::AccountId"
1554
+ },
1555
+ "' >> /home/participant/.bashrc"
1556
+ ]
1557
+ ]
1558
+ },
1559
+ "echo 'export NEXT_TELEMETRY_DISABLED=1' >> /home/participant/.bashrc",
1560
+ "echo \"export PS1='\\[\\033[01;32m\\]\\u:\\[\\033[01;34m\\]\\w\\[\\033[00m\\]\\$ '\" >> /home/participant/.bashrc",
1561
+ "chown -R participant:participant /home/participant"
1562
+ ]
1563
+ }
1564
+ },
1565
+ {
1566
+ "action": "aws:runShellScript",
1567
+ "name": "InstallCDK",
1568
+ "inputs": {
1569
+ "runCommand": [
1570
+ "#!/bin/bash",
1571
+ "npm install -g aws-cdk",
1572
+ "echo \"AWS CDK installed. Checking configuration\"",
1573
+ "cdk --version"
1574
+ ]
1575
+ }
1576
+ }
1577
+ ]
1578
+ },
1579
+ "DocumentType": "Command",
1580
+ "Name": "vscode-server-ubuntu-IntegTestStackUbuntu22"
1581
+ }
1582
+ },
1583
+ "IntegVSCodeServerInstallerOnEventHandlerServiceRole59651FEF": {
1584
+ "Type": "AWS::IAM::Role",
1585
+ "Properties": {
1586
+ "AssumeRolePolicyDocument": {
1587
+ "Statement": [
1588
+ {
1589
+ "Action": "sts:AssumeRole",
1590
+ "Effect": "Allow",
1591
+ "Principal": {
1592
+ "Service": "lambda.amazonaws.com"
1593
+ }
1594
+ }
1595
+ ],
1596
+ "Version": "2012-10-17"
1597
+ },
1598
+ "ManagedPolicyArns": [
1599
+ {
1600
+ "Fn::Join": [
1601
+ "",
1602
+ [
1603
+ "arn:",
1604
+ {
1605
+ "Ref": "AWS::Partition"
1606
+ },
1607
+ ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"
1608
+ ]
1609
+ ]
1610
+ }
1611
+ ]
1612
+ },
1613
+ "Metadata": {
1614
+ "cdk_nag": {
1615
+ "rules_to_suppress": [
1616
+ {
1617
+ "reason": "For this event handler we do not need to restrict managed policies",
1618
+ "id": "AwsSolutions-IAM4"
1619
+ },
1620
+ {
1621
+ "reason": "For this lambda the latest runtime is not needed",
1622
+ "id": "AwsSolutions-L1"
1623
+ }
1624
+ ]
1625
+ }
1626
+ }
1627
+ },
1628
+ "IntegVSCodeServerInstallerOnEventHandlerServiceRoleDefaultPolicy1CAD86C2": {
1629
+ "Type": "AWS::IAM::Policy",
1630
+ "Properties": {
1631
+ "PolicyDocument": {
1632
+ "Statement": [
1633
+ {
1634
+ "Action": "ssm:SendCommand",
1635
+ "Effect": "Allow",
1636
+ "Resource": [
1637
+ {
1638
+ "Fn::Join": [
1639
+ "",
1640
+ [
1641
+ "arn:",
1642
+ {
1643
+ "Ref": "AWS::Partition"
1644
+ },
1645
+ ":ec2:",
1646
+ {
1647
+ "Ref": "AWS::Region"
1648
+ },
1649
+ ":",
1650
+ {
1651
+ "Ref": "AWS::AccountId"
1652
+ },
1653
+ ":instance/",
1654
+ {
1655
+ "Ref": "IntegVSCodeServerserverinstance0A3D62D7"
1656
+ }
1657
+ ]
1658
+ ]
1659
+ },
1660
+ {
1661
+ "Fn::Join": [
1662
+ "",
1663
+ [
1664
+ "arn:",
1665
+ {
1666
+ "Ref": "AWS::Partition"
1667
+ },
1668
+ ":ssm:",
1669
+ {
1670
+ "Ref": "AWS::Region"
1671
+ },
1672
+ ":",
1673
+ {
1674
+ "Ref": "AWS::AccountId"
1675
+ },
1676
+ ":document/AmazonCloudWatch-ManageAgent"
1677
+ ]
1678
+ ]
1679
+ },
1680
+ {
1681
+ "Fn::Join": [
1682
+ "",
1683
+ [
1684
+ "arn:",
1685
+ {
1686
+ "Ref": "AWS::Partition"
1687
+ },
1688
+ ":ssm:",
1689
+ {
1690
+ "Ref": "AWS::Region"
1691
+ },
1692
+ ":",
1693
+ {
1694
+ "Ref": "AWS::AccountId"
1695
+ },
1696
+ ":document/vscode-server-ubuntu-IntegTestStackUbuntu22"
1697
+ ]
1698
+ ]
1699
+ }
1700
+ ]
1701
+ }
1702
+ ],
1703
+ "Version": "2012-10-17"
1704
+ },
1705
+ "PolicyName": "IntegVSCodeServerInstallerOnEventHandlerServiceRoleDefaultPolicy1CAD86C2",
1706
+ "Roles": [
1707
+ {
1708
+ "Ref": "IntegVSCodeServerInstallerOnEventHandlerServiceRole59651FEF"
1709
+ }
1710
+ ]
1711
+ }
1712
+ },
1713
+ "IntegVSCodeServerInstallerOnEventHandler6FF91542": {
1714
+ "Type": "AWS::Lambda::Function",
1715
+ "Properties": {
1716
+ "Code": {
1717
+ "S3Bucket": {
1718
+ "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"
1719
+ },
1720
+ "S3Key": "512cf155ada4793b37a885c1aa6d9bb8f534e88bac6f63c69672d4d73df2decf.zip"
1721
+ },
1722
+ "Description": "src/installer/installer.lambda.ts",
1723
+ "Environment": {
1724
+ "Variables": {
1725
+ "AWS_NODEJS_CONNECTION_REUSE_ENABLED": "1"
1726
+ }
1727
+ },
1728
+ "Handler": "index.handler",
1729
+ "MemorySize": 512,
1730
+ "Role": {
1731
+ "Fn::GetAtt": [
1732
+ "IntegVSCodeServerInstallerOnEventHandlerServiceRole59651FEF",
1733
+ "Arn"
1734
+ ]
1735
+ },
1736
+ "Runtime": "nodejs18.x",
1737
+ "Timeout": 300
1738
+ },
1739
+ "DependsOn": [
1740
+ "IntegVSCodeServerInstallerOnEventHandlerServiceRoleDefaultPolicy1CAD86C2",
1741
+ "IntegVSCodeServerInstallerOnEventHandlerServiceRole59651FEF"
1742
+ ],
1743
+ "Metadata": {
1744
+ "cdk_nag": {
1745
+ "rules_to_suppress": [
1746
+ {
1747
+ "reason": "For this event handler we do not need to restrict managed policies",
1748
+ "id": "AwsSolutions-IAM4"
1749
+ },
1750
+ {
1751
+ "reason": "For this lambda the latest runtime is not needed",
1752
+ "id": "AwsSolutions-L1"
1753
+ }
1754
+ ]
1755
+ }
1756
+ }
1757
+ },
1758
+ "IntegVSCodeServerInstallerProviderframeworkonEventServiceRoleA509851F": {
1759
+ "Type": "AWS::IAM::Role",
1760
+ "Properties": {
1761
+ "AssumeRolePolicyDocument": {
1762
+ "Statement": [
1763
+ {
1764
+ "Action": "sts:AssumeRole",
1765
+ "Effect": "Allow",
1766
+ "Principal": {
1767
+ "Service": "lambda.amazonaws.com"
1768
+ }
1769
+ }
1770
+ ],
1771
+ "Version": "2012-10-17"
1772
+ },
1773
+ "ManagedPolicyArns": [
1774
+ {
1775
+ "Fn::Join": [
1776
+ "",
1777
+ [
1778
+ "arn:",
1779
+ {
1780
+ "Ref": "AWS::Partition"
1781
+ },
1782
+ ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"
1783
+ ]
1784
+ ]
1785
+ }
1786
+ ]
1787
+ },
1788
+ "Metadata": {
1789
+ "cdk_nag": {
1790
+ "rules_to_suppress": [
1791
+ {
1792
+ "reason": "For this provider we do not need to restrict managed policies",
1793
+ "id": "AwsSolutions-IAM4"
1794
+ },
1795
+ {
1796
+ "reason": "For this provider wildcards are fine",
1797
+ "id": "AwsSolutions-IAM5"
1798
+ },
1799
+ {
1800
+ "reason": "For this provider the latest runtime is not needed",
1801
+ "id": "AwsSolutions-L1"
1802
+ }
1803
+ ]
1804
+ }
1805
+ }
1806
+ },
1807
+ "IntegVSCodeServerInstallerProviderframeworkonEventServiceRoleDefaultPolicy3E54FC3A": {
1808
+ "Type": "AWS::IAM::Policy",
1809
+ "Properties": {
1810
+ "PolicyDocument": {
1811
+ "Statement": [
1812
+ {
1813
+ "Action": "lambda:InvokeFunction",
1814
+ "Effect": "Allow",
1815
+ "Resource": [
1816
+ {
1817
+ "Fn::GetAtt": [
1818
+ "IntegVSCodeServerInstallerOnEventHandler6FF91542",
1819
+ "Arn"
1820
+ ]
1821
+ },
1822
+ {
1823
+ "Fn::Join": [
1824
+ "",
1825
+ [
1826
+ {
1827
+ "Fn::GetAtt": [
1828
+ "IntegVSCodeServerInstallerOnEventHandler6FF91542",
1829
+ "Arn"
1830
+ ]
1831
+ },
1832
+ ":*"
1833
+ ]
1834
+ ]
1835
+ }
1836
+ ]
1837
+ }
1838
+ ],
1839
+ "Version": "2012-10-17"
1840
+ },
1841
+ "PolicyName": "IntegVSCodeServerInstallerProviderframeworkonEventServiceRoleDefaultPolicy3E54FC3A",
1842
+ "Roles": [
1843
+ {
1844
+ "Ref": "IntegVSCodeServerInstallerProviderframeworkonEventServiceRoleA509851F"
1845
+ }
1846
+ ]
1847
+ },
1848
+ "Metadata": {
1849
+ "cdk_nag": {
1850
+ "rules_to_suppress": [
1851
+ {
1852
+ "reason": "For this provider we do not need to restrict managed policies",
1853
+ "id": "AwsSolutions-IAM4"
1854
+ },
1855
+ {
1856
+ "reason": "For this provider wildcards are fine",
1857
+ "id": "AwsSolutions-IAM5"
1858
+ },
1859
+ {
1860
+ "reason": "For this provider the latest runtime is not needed",
1861
+ "id": "AwsSolutions-L1"
1862
+ }
1863
+ ]
1864
+ }
1865
+ }
1866
+ },
1867
+ "IntegVSCodeServerInstallerProviderframeworkonEvent7B6C1190": {
1868
+ "Type": "AWS::Lambda::Function",
1869
+ "Properties": {
1870
+ "Code": {
1871
+ "S3Bucket": {
1872
+ "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"
1873
+ },
1874
+ "S3Key": "4dc48ffba382f93077a1e6824599bbd4ceb6f91eb3d9442eca3b85bdb1a20b1e.zip"
1875
+ },
1876
+ "Description": "AWS CDK resource provider framework - onEvent (IntegTestStackUbuntu22/IntegVSCodeServer/InstallerProvider)",
1877
+ "Environment": {
1878
+ "Variables": {
1879
+ "USER_ON_EVENT_FUNCTION_ARN": {
1880
+ "Fn::GetAtt": [
1881
+ "IntegVSCodeServerInstallerOnEventHandler6FF91542",
1882
+ "Arn"
1883
+ ]
1884
+ }
1885
+ }
1886
+ },
1887
+ "Handler": "framework.onEvent",
1888
+ "Role": {
1889
+ "Fn::GetAtt": [
1890
+ "IntegVSCodeServerInstallerProviderframeworkonEventServiceRoleA509851F",
1891
+ "Arn"
1892
+ ]
1893
+ },
1894
+ "Runtime": {
1895
+ "Fn::FindInMap": [
1896
+ "LatestNodeRuntimeMap",
1897
+ {
1898
+ "Ref": "AWS::Region"
1899
+ },
1900
+ "value"
1901
+ ]
1902
+ },
1903
+ "Timeout": 900
1904
+ },
1905
+ "DependsOn": [
1906
+ "IntegVSCodeServerInstallerProviderframeworkonEventServiceRoleDefaultPolicy3E54FC3A",
1907
+ "IntegVSCodeServerInstallerProviderframeworkonEventServiceRoleA509851F"
1908
+ ],
1909
+ "Metadata": {
1910
+ "cdk_nag": {
1911
+ "rules_to_suppress": [
1912
+ {
1913
+ "reason": "For this provider we do not need to restrict managed policies",
1914
+ "id": "AwsSolutions-IAM4"
1915
+ },
1916
+ {
1917
+ "reason": "For this provider wildcards are fine",
1918
+ "id": "AwsSolutions-IAM5"
1919
+ },
1920
+ {
1921
+ "reason": "For this provider the latest runtime is not needed",
1922
+ "id": "AwsSolutions-L1"
1923
+ }
1924
+ ]
1925
+ }
1926
+ }
1927
+ },
1928
+ "IntegVSCodeServerSSMInstallerCustomResource9F9AFE68": {
1929
+ "Type": "AWS::CloudFormation::CustomResource",
1930
+ "Properties": {
1931
+ "ServiceToken": {
1932
+ "Fn::GetAtt": [
1933
+ "IntegVSCodeServerInstallerProviderframeworkonEvent7B6C1190",
1934
+ "Arn"
1935
+ ]
1936
+ },
1937
+ "ServiceTimeout": 305,
1938
+ "InstanceId": {
1939
+ "Ref": "IntegVSCodeServerserverinstance0A3D62D7"
1940
+ },
1941
+ "DocumentName": "vscode-server-ubuntu-IntegTestStackUbuntu22",
1942
+ "CloudWatchLogGroupName": "/aws/ssm/vscode-server-ubuntu-IntegTestStackUbuntu22",
1943
+ "VSCodePassword": {
1944
+ "Fn::GetAtt": [
1945
+ "IntegVSCodeServerSecretRetrieverCustomResource2F3DB8BD",
1946
+ "secretPasswordValue"
1947
+ ]
1948
+ }
1949
+ },
1950
+ "UpdateReplacePolicy": "Delete",
1951
+ "DeletionPolicy": "Delete"
1952
+ },
1953
+ "CustomVpcRestrictDefaultSGCustomResourceProviderRole26592FE0": {
1954
+ "Type": "AWS::IAM::Role",
1955
+ "Properties": {
1956
+ "AssumeRolePolicyDocument": {
1957
+ "Version": "2012-10-17",
1958
+ "Statement": [
1959
+ {
1960
+ "Action": "sts:AssumeRole",
1961
+ "Effect": "Allow",
1962
+ "Principal": {
1963
+ "Service": "lambda.amazonaws.com"
1964
+ }
1965
+ }
1966
+ ]
1967
+ },
1968
+ "ManagedPolicyArns": [
1969
+ {
1970
+ "Fn::Sub": "arn:${AWS::Partition}:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"
1971
+ }
1972
+ ],
1973
+ "Policies": [
1974
+ {
1975
+ "PolicyName": "Inline",
1976
+ "PolicyDocument": {
1977
+ "Version": "2012-10-17",
1978
+ "Statement": [
1979
+ {
1980
+ "Effect": "Allow",
1981
+ "Action": [
1982
+ "ec2:AuthorizeSecurityGroupIngress",
1983
+ "ec2:AuthorizeSecurityGroupEgress",
1984
+ "ec2:RevokeSecurityGroupIngress",
1985
+ "ec2:RevokeSecurityGroupEgress"
1986
+ ],
1987
+ "Resource": [
1988
+ {
1989
+ "Fn::Join": [
1990
+ "",
1991
+ [
1992
+ "arn:",
1993
+ {
1994
+ "Ref": "AWS::Partition"
1995
+ },
1996
+ ":ec2:",
1997
+ {
1998
+ "Ref": "AWS::Region"
1999
+ },
2000
+ ":",
2001
+ {
2002
+ "Ref": "AWS::AccountId"
2003
+ },
2004
+ ":security-group/",
2005
+ {
2006
+ "Fn::GetAtt": [
2007
+ "IntegVSCodeServervpc93DDE887",
2008
+ "DefaultSecurityGroup"
2009
+ ]
2010
+ }
2011
+ ]
2012
+ ]
2013
+ }
2014
+ ]
2015
+ }
2016
+ ]
2017
+ }
2018
+ }
2019
+ ]
2020
+ }
2021
+ },
2022
+ "CustomVpcRestrictDefaultSGCustomResourceProviderHandlerDC833E5E": {
2023
+ "Type": "AWS::Lambda::Function",
2024
+ "Properties": {
2025
+ "Code": {
2026
+ "S3Bucket": {
2027
+ "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"
2028
+ },
2029
+ "S3Key": "ee7de53d64cc9d6248fa6aa550f92358f6c907b5efd6f3298aeab1b5e7ea358a.zip"
2030
+ },
2031
+ "Timeout": 900,
2032
+ "MemorySize": 128,
2033
+ "Handler": "__entrypoint__.handler",
2034
+ "Role": {
2035
+ "Fn::GetAtt": [
2036
+ "CustomVpcRestrictDefaultSGCustomResourceProviderRole26592FE0",
2037
+ "Arn"
2038
+ ]
2039
+ },
2040
+ "Runtime": {
2041
+ "Fn::FindInMap": [
2042
+ "LatestNodeRuntimeMap",
2043
+ {
2044
+ "Ref": "AWS::Region"
2045
+ },
2046
+ "value"
2047
+ ]
2048
+ },
2049
+ "Description": "Lambda function for removing all inbound/outbound rules from the VPC default security group"
2050
+ },
2051
+ "DependsOn": [
2052
+ "CustomVpcRestrictDefaultSGCustomResourceProviderRole26592FE0"
2053
+ ]
2054
+ },
2055
+ "AWS679f53fac002430cb0da5b7982bd22872D164C4C": {
2056
+ "Type": "AWS::Lambda::Function",
2057
+ "Properties": {
2058
+ "Code": {
2059
+ "S3Bucket": {
2060
+ "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"
2061
+ },
2062
+ "S3Key": "ce2f3595a340d6c519a65888ef97e3b9b64f053f83608e32cc28162e22d7d99a.zip"
2063
+ },
2064
+ "Handler": "index.handler",
2065
+ "LoggingConfig": {
2066
+ "LogGroup": {
2067
+ "Ref": "IntegVSCodeServercfprefixlistIdGetPrefixListIdLogGroup171C2803"
2068
+ }
2069
+ },
2070
+ "Role": {
2071
+ "Fn::GetAtt": [
2072
+ "IntegVSCodeServercfprefixlistIdGetPrefixListIdRole1302B3E1",
2073
+ "Arn"
2074
+ ]
2075
+ },
2076
+ "Runtime": {
2077
+ "Fn::FindInMap": [
2078
+ "LatestNodeRuntimeMap",
2079
+ {
2080
+ "Ref": "AWS::Region"
2081
+ },
2082
+ "value"
2083
+ ]
2084
+ },
2085
+ "Timeout": 120
2086
+ },
2087
+ "DependsOn": [
2088
+ "IntegVSCodeServercfprefixlistIdGetPrefixListIdRole1302B3E1"
2089
+ ]
2090
+ },
2091
+ "loginhandlerServiceRole330B0B32": {
2092
+ "Type": "AWS::IAM::Role",
2093
+ "Properties": {
2094
+ "AssumeRolePolicyDocument": {
2095
+ "Statement": [
2096
+ {
2097
+ "Action": "sts:AssumeRole",
2098
+ "Effect": "Allow",
2099
+ "Principal": {
2100
+ "Service": "lambda.amazonaws.com"
2101
+ }
2102
+ }
2103
+ ],
2104
+ "Version": "2012-10-17"
2105
+ },
2106
+ "ManagedPolicyArns": [
2107
+ {
2108
+ "Fn::Join": [
2109
+ "",
2110
+ [
2111
+ "arn:",
2112
+ {
2113
+ "Ref": "AWS::Partition"
2114
+ },
2115
+ ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"
2116
+ ]
2117
+ ]
2118
+ }
2119
+ ]
2120
+ }
2121
+ },
2122
+ "loginhandler99CCCCFD": {
2123
+ "Type": "AWS::Lambda::Function",
2124
+ "Properties": {
2125
+ "Code": {
2126
+ "S3Bucket": {
2127
+ "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"
2128
+ },
2129
+ "S3Key": "23732f3d1982f7fb0da3bd6638a8107337bb767fea165b45eae12000a1dd67ce.zip"
2130
+ },
2131
+ "Handler": "index.handler",
2132
+ "Role": {
2133
+ "Fn::GetAtt": [
2134
+ "loginhandlerServiceRole330B0B32",
2135
+ "Arn"
2136
+ ]
2137
+ },
2138
+ "Runtime": "nodejs20.x",
2139
+ "Timeout": 30
2140
+ },
2141
+ "DependsOn": [
2142
+ "loginhandlerServiceRole330B0B32"
2143
+ ]
2144
+ },
2145
+ "loginhandlerLogRetentionFD323A9B": {
2146
+ "Type": "Custom::LogRetention",
2147
+ "Properties": {
2148
+ "ServiceToken": {
2149
+ "Fn::GetAtt": [
2150
+ "LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8aFD4BFC8A",
2151
+ "Arn"
2152
+ ]
2153
+ },
2154
+ "LogGroupName": {
2155
+ "Fn::Join": [
2156
+ "",
2157
+ [
2158
+ "/aws/lambda/",
2159
+ {
2160
+ "Ref": "loginhandler99CCCCFD"
2161
+ }
2162
+ ]
2163
+ ]
2164
+ },
2165
+ "RetentionInDays": 1
2166
+ }
2167
+ },
2168
+ "LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8aServiceRole9741ECFB": {
2169
+ "Type": "AWS::IAM::Role",
2170
+ "Properties": {
2171
+ "AssumeRolePolicyDocument": {
2172
+ "Statement": [
2173
+ {
2174
+ "Action": "sts:AssumeRole",
2175
+ "Effect": "Allow",
2176
+ "Principal": {
2177
+ "Service": "lambda.amazonaws.com"
2178
+ }
2179
+ }
2180
+ ],
2181
+ "Version": "2012-10-17"
2182
+ },
2183
+ "ManagedPolicyArns": [
2184
+ {
2185
+ "Fn::Join": [
2186
+ "",
2187
+ [
2188
+ "arn:",
2189
+ {
2190
+ "Ref": "AWS::Partition"
2191
+ },
2192
+ ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"
2193
+ ]
2194
+ ]
2195
+ }
2196
+ ]
2197
+ }
2198
+ },
2199
+ "LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8aServiceRoleDefaultPolicyADDA7DEB": {
2200
+ "Type": "AWS::IAM::Policy",
2201
+ "Properties": {
2202
+ "PolicyDocument": {
2203
+ "Statement": [
2204
+ {
2205
+ "Action": [
2206
+ "logs:DeleteRetentionPolicy",
2207
+ "logs:PutRetentionPolicy"
2208
+ ],
2209
+ "Effect": "Allow",
2210
+ "Resource": "*"
2211
+ }
2212
+ ],
2213
+ "Version": "2012-10-17"
2214
+ },
2215
+ "PolicyName": "LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8aServiceRoleDefaultPolicyADDA7DEB",
2216
+ "Roles": [
2217
+ {
2218
+ "Ref": "LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8aServiceRole9741ECFB"
2219
+ }
2220
+ ]
2221
+ }
2222
+ },
2223
+ "LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8aFD4BFC8A": {
2224
+ "Type": "AWS::Lambda::Function",
2225
+ "Properties": {
2226
+ "Handler": "index.handler",
2227
+ "Runtime": {
2228
+ "Fn::FindInMap": [
2229
+ "LatestNodeRuntimeMap",
2230
+ {
2231
+ "Ref": "AWS::Region"
2232
+ },
2233
+ "value"
2234
+ ]
2235
+ },
2236
+ "Timeout": 900,
2237
+ "Code": {
2238
+ "S3Bucket": {
2239
+ "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"
2240
+ },
2241
+ "S3Key": "2819175352ad1ce0dae768e83fc328fb70fb5f10b4a8ff0ccbcb791f02b0716d.zip"
2242
+ },
2243
+ "Role": {
2244
+ "Fn::GetAtt": [
2245
+ "LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8aServiceRole9741ECFB",
2246
+ "Arn"
2247
+ ]
2248
+ }
2249
+ },
2250
+ "DependsOn": [
2251
+ "LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8aServiceRoleDefaultPolicyADDA7DEB",
2252
+ "LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8aServiceRole9741ECFB"
2253
+ ]
2254
+ }
2255
+ },
2256
+ "Outputs": {
2257
+ "IntegVSCodeServerdomainName6B9F2604": {
2258
+ "Description": "The domain name of the distribution",
2259
+ "Value": {
2260
+ "Fn::Join": [
2261
+ "",
2262
+ [
2263
+ "https://",
2264
+ {
2265
+ "Fn::GetAtt": [
2266
+ "IntegVSCodeServercfdistributionFDBE873F",
2267
+ "DomainName"
2268
+ ]
2269
+ },
2270
+ "/?folder=/Workshop"
2271
+ ]
2272
+ ]
2273
+ }
2274
+ },
2275
+ "IntegVSCodeServerpasswordE38D3B2C": {
2276
+ "Description": "The password for the VSCode server",
2277
+ "Value": {
2278
+ "Fn::GetAtt": [
2279
+ "IntegVSCodeServerSecretRetrieverCustomResource2F3DB8BD",
2280
+ "secretPasswordValue"
2281
+ ]
2282
+ }
2283
+ },
2284
+ "ExportsOutputRefloginhandler99CCCCFD29CE21C0": {
2285
+ "Value": {
2286
+ "Ref": "loginhandler99CCCCFD"
2287
+ },
2288
+ "Export": {
2289
+ "Name": "IntegTestStackUbuntu22:ExportsOutputRefloginhandler99CCCCFD29CE21C0"
2290
+ }
2291
+ },
2292
+ "ExportsOutputFnGetAttIntegVSCodeServercfdistributionFDBE873FDomainName3CB40F9D": {
2293
+ "Value": {
2294
+ "Fn::GetAtt": [
2295
+ "IntegVSCodeServercfdistributionFDBE873F",
2296
+ "DomainName"
2297
+ ]
2298
+ },
2299
+ "Export": {
2300
+ "Name": "IntegTestStackUbuntu22:ExportsOutputFnGetAttIntegVSCodeServercfdistributionFDBE873FDomainName3CB40F9D"
2301
+ }
2302
+ },
2303
+ "ExportsOutputFnGetAttIntegVSCodeServerSecretRetrieverCustomResource2F3DB8BDsecretPasswordValue1223507B": {
2304
+ "Value": {
2305
+ "Fn::GetAtt": [
2306
+ "IntegVSCodeServerSecretRetrieverCustomResource2F3DB8BD",
2307
+ "secretPasswordValue"
2308
+ ]
2309
+ },
2310
+ "Export": {
2311
+ "Name": "IntegTestStackUbuntu22:ExportsOutputFnGetAttIntegVSCodeServerSecretRetrieverCustomResource2F3DB8BDsecretPasswordValue1223507B"
2312
+ }
2313
+ }
2314
+ },
2315
+ "Mappings": {
2316
+ "LatestNodeRuntimeMap": {
2317
+ "af-south-1": {
2318
+ "value": "nodejs20.x"
2319
+ },
2320
+ "ap-east-1": {
2321
+ "value": "nodejs20.x"
2322
+ },
2323
+ "ap-northeast-1": {
2324
+ "value": "nodejs20.x"
2325
+ },
2326
+ "ap-northeast-2": {
2327
+ "value": "nodejs20.x"
2328
+ },
2329
+ "ap-northeast-3": {
2330
+ "value": "nodejs20.x"
2331
+ },
2332
+ "ap-south-1": {
2333
+ "value": "nodejs20.x"
2334
+ },
2335
+ "ap-south-2": {
2336
+ "value": "nodejs20.x"
2337
+ },
2338
+ "ap-southeast-1": {
2339
+ "value": "nodejs20.x"
2340
+ },
2341
+ "ap-southeast-2": {
2342
+ "value": "nodejs20.x"
2343
+ },
2344
+ "ap-southeast-3": {
2345
+ "value": "nodejs20.x"
2346
+ },
2347
+ "ap-southeast-4": {
2348
+ "value": "nodejs20.x"
2349
+ },
2350
+ "ap-southeast-5": {
2351
+ "value": "nodejs20.x"
2352
+ },
2353
+ "ap-southeast-7": {
2354
+ "value": "nodejs20.x"
2355
+ },
2356
+ "ca-central-1": {
2357
+ "value": "nodejs20.x"
2358
+ },
2359
+ "ca-west-1": {
2360
+ "value": "nodejs20.x"
2361
+ },
2362
+ "cn-north-1": {
2363
+ "value": "nodejs18.x"
2364
+ },
2365
+ "cn-northwest-1": {
2366
+ "value": "nodejs18.x"
2367
+ },
2368
+ "eu-central-1": {
2369
+ "value": "nodejs20.x"
2370
+ },
2371
+ "eu-central-2": {
2372
+ "value": "nodejs20.x"
2373
+ },
2374
+ "eu-isoe-west-1": {
2375
+ "value": "nodejs18.x"
2376
+ },
2377
+ "eu-north-1": {
2378
+ "value": "nodejs20.x"
2379
+ },
2380
+ "eu-south-1": {
2381
+ "value": "nodejs20.x"
2382
+ },
2383
+ "eu-south-2": {
2384
+ "value": "nodejs20.x"
2385
+ },
2386
+ "eu-west-1": {
2387
+ "value": "nodejs20.x"
2388
+ },
2389
+ "eu-west-2": {
2390
+ "value": "nodejs20.x"
2391
+ },
2392
+ "eu-west-3": {
2393
+ "value": "nodejs20.x"
2394
+ },
2395
+ "il-central-1": {
2396
+ "value": "nodejs20.x"
2397
+ },
2398
+ "me-central-1": {
2399
+ "value": "nodejs20.x"
2400
+ },
2401
+ "me-south-1": {
2402
+ "value": "nodejs20.x"
2403
+ },
2404
+ "mx-central-1": {
2405
+ "value": "nodejs20.x"
2406
+ },
2407
+ "sa-east-1": {
2408
+ "value": "nodejs20.x"
2409
+ },
2410
+ "us-east-1": {
2411
+ "value": "nodejs20.x"
2412
+ },
2413
+ "us-east-2": {
2414
+ "value": "nodejs20.x"
2415
+ },
2416
+ "us-gov-east-1": {
2417
+ "value": "nodejs18.x"
2418
+ },
2419
+ "us-gov-west-1": {
2420
+ "value": "nodejs18.x"
2421
+ },
2422
+ "us-iso-east-1": {
2423
+ "value": "nodejs18.x"
2424
+ },
2425
+ "us-iso-west-1": {
2426
+ "value": "nodejs18.x"
2427
+ },
2428
+ "us-isob-east-1": {
2429
+ "value": "nodejs18.x"
2430
+ },
2431
+ "us-west-1": {
2432
+ "value": "nodejs20.x"
2433
+ },
2434
+ "us-west-2": {
2435
+ "value": "nodejs20.x"
2436
+ }
2437
+ }
2438
+ },
2439
+ "Parameters": {
2440
+ "SsmParameterValueawsservicecanonicalubuntuserverjammystablecurrentarm64hvmebsgp2amiidC96584B6F00A464EAD1953AFF4B05118Parameter": {
2441
+ "Type": "AWS::SSM::Parameter::Value<AWS::EC2::Image::Id>",
2442
+ "Default": "/aws/service/canonical/ubuntu/server/jammy/stable/current/arm64/hvm/ebs-gp2/ami-id"
2443
+ },
2444
+ "BootstrapVersion": {
2445
+ "Type": "AWS::SSM::Parameter::Value<String>",
2446
+ "Default": "/cdk-bootstrap/hnb659fds/version",
2447
+ "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]"
2448
+ }
2449
+ },
2450
+ "Rules": {
2451
+ "CheckBootstrapVersion": {
2452
+ "Assertions": [
2453
+ {
2454
+ "Assert": {
2455
+ "Fn::Not": [
2456
+ {
2457
+ "Fn::Contains": [
2458
+ [
2459
+ "1",
2460
+ "2",
2461
+ "3",
2462
+ "4",
2463
+ "5"
2464
+ ],
2465
+ {
2466
+ "Ref": "BootstrapVersion"
2467
+ }
2468
+ ]
2469
+ }
2470
+ ]
2471
+ },
2472
+ "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI."
2473
+ }
2474
+ ]
2475
+ }
2476
+ }
2477
+ }